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

时间:2019-04-20 22:05:35

标签: serial-port arduino-uno servo arduino-c++

我一直在玩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)使用外部电源而不是通过USB连接到笔记本电脑为Arduino供电。通过独立给伺服器供电也一样 c)直接断开伺服器

如果有人对这里发生的事情有所了解,我将不胜感激。 干杯!

1 个答案:

答案 0 :(得分:0)

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

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

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

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