0

我一直在玩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) 直接断开伺服

如果有人知道这里发生了什么,我将不胜感激。干杯!

4

1 回答 1

0

我假设pos是一个int。您可以强制pos转换为 String 来解决问题。尝试这个。

Serial.println("Position: " + (String)pos);

或者,像这样将整个输出转换为 String 。

Serial.println((String)"Position: " + pos);
于 2019-04-21T00:00:21.967 回答