我正在使用非常简单的ardunio代码来打印“hello world”。就一次。但是当它打印到串行监视器时,字符“hehello 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) {}
}
答案 0 :(得分:0)
我不是百分百肯定,而是一些可能性:
首先,这段代码将在Arduino上电后立即开始运行,但在您告知之前它不会输出到串行监视器。那么"你好"很可能已经在你打开它的时候编写了。你可以通过长时间延迟来解决这个问题,你好"你好"命令或Serial.begin()
之后。
另一个想法:delay()
可能干扰了连续写作。写入序列需要一定的时间,当代码到达delay()
调用时,它仍然可能正在编写" hello"。您可以使用delay()
以外的函数来解决此问题。例如,有一个名为startTime
的变量,该变量在millis()
期间启动到setup()
。然后说(例如):
if (millis()>startTime+1000 && !helloSent){
Serial.print("hello");
helloSent=true;
}
然后摆脱你的while
循环。
这些都不能真正解释" hehello" (如果有的话,我希望你能看到" llo"或者其他一些)。但是他们想的是。
显而易见:确保串行监视器上的波特率最高可达9600