2014-09-26 71 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