我一直在使用来自https://learn.adafruit.com/multi-tasking-the-arduino-part-1?view=all的伺服/leds控制器示例
在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)用外部电源为Arduino供电,而不是用USB连接我的笔记本电脑。通过独立驱动伺服,c)直接断开伺服
如果有人知道这里发生了什么,我会非常感激的。干杯!
发布于 2019-04-21 00:00:21
我假设pos是一个int。您可以将pos转换为String来解决问题。尝尝这个。
Serial.println("Position: " + (String)pos);或者,将整个输出转换为这样的字符串。
Serial.println((String)"Position: " + pos);https://stackoverflow.com/questions/55778158
复制相似问题