2012-12-11 153 views
2

我的目標是創建一個循環遍歷數字,一旦達到最大值,它會停止打印。到目前爲止,我設法創建了一段停止打印x的代碼,但它保持打印爲零。當迭代達到最大值時,如何停止Serial.print()函數的執行?for循環Arduino/C

int x; 
boolean f = false; 

void setup(){ 
    Serial.begin(9600); 
} 

void loop(){ 
    for(x=0;x<8;x++){ 
    Serial.println(x); 
    delay(300); 
    if(x==7){ 
     f = true; 
    } 
    if(f){ 
     break; 
    } 
    } 
} 

回答

1

下面的東西應該可以提供。順便說一句,我喜歡給我的變數命名一些有意義的東西,以避免潛在的混淆,並使代碼更易理解。

(一般來說你最好張貼問題到Arduino forum得到答案的更多的流量和更多的知識淵博/樂於助人的人==更多的可能性。)

int current; 
int limit; 
boolean complete; 

void setup(){ 
    Serial.begin(9600); 

    current = 0; 
    limit = 8; 
    complete = false; 
} 

void loop(){ 

    if (!complete){ 
    while (true){ 
     Serial.println(current); 
     current++; 
     if (current >= limit){ 
     complete = true; 
     break; 
     } 
     delay(300); 
    } 
    } 
} 
+0

我不想在Arduino論壇上爲此打開一個主題。優秀的答案順便說一句,謝謝! – alkopop79

1

的關鍵是單詞loop - 即函數被重複調用!

如果您希望發生一次,請在setup()或者(如另一個答案所示)執行此操作,請有一個標記以跟蹤您已經完成的事實。

另一種方式(因爲x是全球性的)將是:

void loop() { 
    if (x < 8) { 
    Serial.println(x); 
    x++; 
    } 
} 

,或者擺脫全局變量:

void loop() { 
    static int x = 0; 
    if (x < 8) { 
    Serial.println(x); 
    x++; 
    } 
} 
+0

整潔!非常感謝! – alkopop79

0
int x; 
boolean f = false; 

void setup(){ 
    Serial.begin(9600); 
} 

非常相似,你的代碼,只是把在if語句中打印語句並設置好。

void loop(){ 
    for(x=0;x<8;x++){ 
    if(!f) { 
     Serial.println(x); 
    } 
    delay(300); 
    if(x==7){ 
     f = true; 
    } 
    } 
}