Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在myservo.attach()命令执行期间停止Arduino伺服移动_Arduino_Servo - Fatal编程技术网

如何在myservo.attach()命令执行期间停止Arduino伺服移动

如何在myservo.attach()命令执行期间停止Arduino伺服移动,arduino,servo,Arduino,Servo,我正在使用Arduino中的默认伺服库。当我的Arduino Uno启动并连接伺服时,电机将移动其范围的大部分。我不能让我的项目发生这种情况,我需要它转向并保持当前的状态 我也看过这篇文章,但如果我读得正确,它是针对另一个库的。为什么会出现问题? RC伺服装置根据发送给它们的脉冲宽度设置它们的位置。通常这种宽度的变化范围约为500-2500us,频率为50Hz。当伺服系统接收到这样的信号时,它会到达相应的位置。例如,如果它接收到1500us宽的脉冲,它将进入中间位置。当您调用servo.atta

我正在使用Arduino中的默认伺服库。当我的Arduino Uno启动并连接伺服时,电机将移动其范围的大部分。我不能让我的项目发生这种情况,我需要它转向并保持当前的状态


我也看过这篇文章,但如果我读得正确,它是针对另一个库的。

为什么会出现问题?

RC伺服装置根据发送给它们的脉冲宽度设置它们的位置。通常这种宽度的变化范围约为500-2500us,频率为50Hz。当伺服系统接收到这样的信号时,它会到达相应的位置。例如,如果它接收到1500us宽的脉冲,它将进入中间位置。当您调用
servo.attach()
时,Arduino将开始感应
DEFAULT\u PULSE\u WIDTH
的脉冲,该脉冲恰好为1500us

对此可以做些什么?


链接问题的解决方案也适用于标准Arduino伺服库。找到
DEFAULT\u PULSE\u WIDTH
并将其值更改为0。如果没有脉冲,伺服将无法转动。Arduino将在第一次调用servo.write()后开始发送信号。请记住,在此之前不会有保持扭矩。

可能原因

当你的Arduino Uno启动时,两件事同时发生

  • Arduino Uno运行其引导加载程序,伺服引脚处于输入模式
  • 伺服获得动力,在没有信号的情况下稍微移动
引导加载程序完成后,程序启动并执行附加调用


我可以复制效果与我的Arduino初学者的孩子和它包括便宜的伺服

欢迎来到SO,如何帮助您仅使用“Arduino中的默认伺服库”。。。请再次阅读并尝试提供“其范围的一个良好部分”?这是什么意思?20%? 50%? 它的范围是多少?它会一直移动到相同的位置吗?这句话没什么意思。@King如果你想知道库中发生了什么,请阅读它的源代码。在我的例子中,对于给定的问题,它在C:\ProgramFiles(x86)\Arduino\libraries\Servo\中。您拥有源代码,您可以阅读、理解并在需要时对其进行修改。它是一台电脑,你自己的,没有意志的奴隶。成为它的主人@小猪,你会在伺服文件夹中更改哪个源文件?您知道该文件夹中有多少
Servo.cpp
源文件吗?@neuronet同一文件夹中不能有多个
Servo.cpp
。。。您可以更改包含要更改的特定内容的文件。我真的没有得到你想要的。请说得更具体些