Ardunio串行监视器在打印字符0,1,2之前打印字符0,1等
本文关键字:打印 字符 Ardunio 监视器 | 更新日期: 2023-09-27 18:24:55
我使用非常简单的ardunio代码只打印一次"hello world."。但当它打印到串行监视器时,会出现"你好世界"的字符。有人知道为什么"他"被印了两次吗?
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.print("hello");
delay(1000);
Serial.print(" ");
Serial.print("world.");
delay(1000);
Serial.print(" ");
delay(1000);
while(1) {}
}
我不是100%确定,但有几种可能性:
-
首先,一旦Arduino通电,这段代码就会开始运行,但在你告诉它之前,它不会输出到串行监视器。因此,当你打开它时,"hello"很可能已经写好了。你可以通过在"hello"命令或
Serial.begin()
之后加上长时间的延迟来解决这个问题。 -
另一种想法是:
delay()
可能会干扰串行写入。写入serial需要一定的时间长度,当代码到达delay()
调用时,可能仍处于写入"hello"的中间。您可以使用delay()
以外的函数来解决此问题。例如,有一个名为startTime
的变量,它在setup()
期间初始化为millis()
。然后说(例如):if (millis()>startTime+1000 && !helloSent){ Serial.print("hello"); helloSent=true; }
然后去掉你的while
循环。
这两个都不能真正解释"你好"(如果有什么不同的话,我希望你能看到"你好"或类似的东西)。但它们是思想。
愚蠢的显而易见的事情:确保串行监视器上的波特率实际上匹配到9600