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

像下面这样的东西应该服务。顺便说一句,我喜欢给我的 vars 命名一些有意义的东西,以避免潜在的混淆并使代码更易于理解。

(一般来说,您最好将问题发布到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 回答
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 回答
0
int x;
boolean f = false;

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

与您的代码非常相似,只需将 print 语句放在 if 语句中即可。

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 回答