Arduino 定时器循环

Arduino Timer loop

我正在为我的 Arduino 编写一些代码,显示“定时器(从 1-100 开始计数)”然后显示“中断:b”(b 充当循环次数的占位符)它计数为 100然后打印出我的 else 语句,但它没有循环,我的 b 值一直在增加。我哪里错了?

    void loop() {

    int a = 0;
    int b = 0;

         if(a != 100){
    
          lcd.setCursor(0,0);
          lcd.print("Timer");
          lcd.print("");
          a++;
          lcd.print(a); 
          delay(10);
          lcd.clear();
          
        }
        else{
    //
          b++;
          lcd.print("Interrupt");
          
          lcd.print(b);
          delay(1000);
          lcd.clear();
          
    //      
    //   
       }
    }  

 

您在 loop() 的开头定义了 ab,每次都会调用循环函数,因此您的 ab 每次都被清除。可能你必须定义 then out of the loop 函数。
编辑:在我的示例中,我在 setup() 函数中声明了变量,正如评论我的答案的人所说,它仅在该函数的范围内声明了一个变量,您实际上需要在任何函数之外声明它。

int a = 0;
int b = 0;
void loop() {
     if(a != 100){
      lcd.setCursor(0,0);
      lcd.print("Timer");
      lcd.print("");
      a++;
      lcd.print(a); 
      delay(10);
      lcd.clear();
    }
    else{
      b++;
      lcd.print("Interrupt");
      lcd.print(b);
      delay(1000);
      lcd.clear();
      a=0;
   }
}

编辑 2:实际上,您的代码并未执行您想要的操作。它从 1 数到 100 一次,然后开始递增并打印 b。您必须清除 else 语句中的 a 变量才能重新开始计数。我在 Tinkercad 中测试了代码,现在它似乎可以工作了。
Tinkercad 中使用的代码:

void setup()
{
  Serial.begin(9600);
}
int a = 0;
int b = 0;
void loop() {

     if(a != 100){
      a++;
       Serial.println(a);
       delay(10);
    }
    else{
      b++;
      Serial.println(b);
      delay(1000);
      a = 0;
   }
}