我在Arduino中使用默认的Servo库。当我的Arduino Uno启动并连接伺服电机时,电机将移动其范围的很大一部分。我的项目无法实现这一点,我需要它转而保持现状。
此外,我已经看过this帖子,但如果我正确地阅读了它的另一个库。
答案 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启动时,两件事情同时发生
引导加载程序完成后,程序启动并且调用attach是perfomred。
我可以用我的Arduino初学者孩子重现效果,其中包括便宜的伺服。