我一直在玩https://learn.adafruit.com/multi-tasking-the-arduino-part-1?view=all中的伺服/LED 控制器示例
在伺服的更新功能中,我添加了以下用于调试目的:
Serial.print("Position: ");
Serial.println(pos);
生产
Position: 180
Position: 90
Position: 0
Position: 90
Position: 180
Position: 90
Position: 0
作为执行期间串行监视器中的输出。
然后我将这两行更改为:
Serial.print("Position: " + pos);
产生了这个输出
Position:
Position:
(似乎只要值为 0 就打印“位置”。)
从逻辑的角度来看,两者应该是相同的,所以我尝试了其他的东西,怀疑伺服和串行通信之间存在某种干扰,但没有成功,例如:
a) 不同的波特率(1200、2400、9600 到 115200),使代码与串行监视器保持同步。b) 使用外部电源为 Arduino 供电,而不是通过 USB 连接到我的笔记本电脑。通过独立为伺服供电相同 c) 直接断开伺服
如果有人知道这里发生了什么,我将不胜感激。干杯!