我在 Arduino 中使用默认的伺服库。当我的 Arduino Uno 启动并连接伺服电机时,电机将移动其范围的很大一部分。我不能让我的项目发生这种情况,我需要它转动并保持在当前位置。
我也看过这篇文章,但如果我正确阅读它,它适用于不同的图书馆。
为什么会出现问题?
RC 伺服系统根据发送给它们的脉冲宽度来设置它们的位置。通常这个宽度在 ~500 - 2500us 的范围内变化,频率为 50Hz。当伺服器接收到这样的信号时,它会转到相应的位置。例如 - 如果它接收到 1500us 宽的脉冲,它将转到中间位置。当您调用时servo.attach()
,Arduino 将开始感应DEFAULT_PULSE_WIDTH
恰好为 1500us 的脉冲。
对此可以做些什么?
链接问题的解决方案也适用于标准 Arduino 伺服库。找到DEFAULT_PULSE_WIDTH
并将其值更改为0。如果没有脉冲,伺服将不会转动。servo.write()
Arduino 将在第一次通话后开始发送信号。请记住,在那之前不会有保持扭矩。
可能的原因
当您的 Arduino Uno 启动时,两件事同时发生
引导加载程序完成后,程序启动并执行附加调用。
我可以用我的 Arduino 初学者孩子重现这种效果,它包括便宜的伺服器。