2014-09-26 42 views
-2

我使用非常简单的ardunio代码来打印“hello world”。就一次。但是,当它打印到串行监视器时,字符“hehello world”。出现。有谁知道为什么“他”会打印两次?Ardunio串行监视器打印字符0,1之前打印字符0,1,2等

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

我不是100%肯定,但有几个可能性:

  • 原因之一,这个代码将尽快开始Arduino的通电运行,但不会输出到串行监视器,直到你告诉它。所以当你打开它时,“你好”可能已经写好了。您可以通过延迟“hello”命令或Serial.begin()后解决此问题。

  • 另一个想法:delay()可能会干扰串行写入。写入串行需要一段时间,当代码到达delay()调用时,它可能仍处于写入“hello”的中间。您可以使用除delay()以外的其他功能来解决此问题。例如,有一个名为startTime的变量,该变量在setup()期间被初始化为millis()。然后说(举例):

     
    if (millis()>startTime+1000 && !helloSent){ 
        Serial.print("hello"); 
        helloSent=true; 
    } 
    

然后摆脱你while循环。

这些都没有真正解释“hehello”(如果有的话,我希望你看到“llo”或其他)。但他们是想法。

愚蠢的事情:确保您的串行监视器的波特率实际上匹配高达9600