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

问题描述 投票:0回答:1

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

如果有人知道这里发生了什么,我真的很感激。干杯!

serial-port arduino-uno servo arduino-c++
1个回答
0
投票

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

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

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

Serial.println((String)"Position: " + pos);
© www.soinside.com 2019 - 2024. All rights reserved.