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) {}
}

Ardunio串行监视器在打印字符0,1,2之前打印字符0,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