2

私の目的は、数値を反復処理する for ループを作成し、最大値に達すると印刷を停止することです。これまでのところ、x の出力を停止するコードを作成することができましたが、ゼロは出力し続けます。反復が最大値に達したら、Serial.print() 関数の実行を停止するにはどうすればよいですか?

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;
    }
  }
}
4

3 に答える 3

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++;
   }
}
于 2012-12-12T15:31:25.857 に答える
1

以下のようなものが役立つはずです。ところで、潜在的な混乱を避け、コードをよりわかりやすくするために、変数に意味のある名前を付けるのが好きです。

(一般的には、 Arduino フォーラムに質問を投稿する方が良いでしょう。トラフィックが増え、知識が豊富で親切な人が増える == 回答を得られる可能性が高くなります。)

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);
    }
  }
}
于 2012-12-11T18:14:02.420 に答える
0
int x;
boolean f = false;

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

あなたのコードと非常によく似ていますが、if ステートメントに print ステートメントを入れるだけで準備完了です。

void loop(){
  for(x=0;x<8;x++){
    if(!f) {
      Serial.println(x);
    }
    delay(300);
    if(x==7){
      f = true;
    }
  }
}
于 2012-12-19T17:39:15.820 に答える