我一直在玩https://learn.adafruit.com/multi-tasking-the-arduino-part-1?view=all的伺服/ LED控制器示例
在Servo的Update功能中,我添加了以下内容用于调试目的:
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)使用外部电源而不是USB连接到笔记本电脑为Arduino供电。同样通过独立驱动伺服c)直接断开伺服
如果有人知道这里发生了什么,我真的很感激。干杯!
我假设pos
是一个int。您可以将pos
强制转换为String来解决问题。试试这个。
Serial.println("Position: " + (String)pos);
或者,像这样将整个输出转换为String。
Serial.println((String)"Position: " + pos);