使用带有 Arduino Uno 的伺服系统的串行监视器的奇怪问题

Weird issue with serial monitor using servos with an Arduino Uno

我一直在玩 https://learn.adafruit.com/multi-tasking-the-arduino-part-1?view=all

中的 servo/leds 控制器示例

在 Servo 的更新功能中,我添加了以下内容用于调试目的:

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 就打印 'Position'。)

从逻辑的角度来看,两者应该是相同的,所以我尝试了其他一些怀疑伺服和串行通信之间存在某种干扰但没有成功的事情,比如:

a) 不同的波特率(1200、2400、9600 到 115200),使代码与串行监视器保持同步。 b) 使用外部电源而不是 USB 连接到我的笔记本电脑为 Arduino 供电。同样通过独立给伺服器供电 c)直接断开舵机

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

我假设 pos 是一个整数。您可以将 pos 转换为 String 来解决问题。 试试这个。

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

或者,像这样将整个输出转换为字符串。

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