如何在myservo.attach()命令期间阻止Arduino Servo移动

时间:2016-11-30 16:06:41

标签: arduino servo

我在Arduino中使用默认的Servo库。当我的Arduino Uno启动并连接伺服电机时,电机将移动其范围的很大一部分。我的项目无法实现这一点,我需要它转而保持现状。

此外,我已经看过this帖子,但如果我正确地阅读了它的另一个库。

2 个答案:

答案 0 :(得分:2)

为什么会出现问题?

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

可以做些什么?

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

答案 1 :(得分:0)

可能的原因

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

  • Arduino Uno运行它的引导程序并且伺服引脚处于输入模式
  • 伺服获得电源并在没有信号的情况下移动一点

引导加载程序完成后,程序启动并且调用attach是perfomred。

我可以用我的Arduino初学者孩子重现效果,其中包括便宜的伺服。