Search code examples
c++loopsarduinocounterarduino-ide

Arduino Timer loop


I'm Writing some code for my Arduino that displays "Timer(counts from 1-100)" then displays "Interrupts: b"( b acts as a placeholder for how many times it looped)It counts to 100 then prints out my else statement but it doesn't loop and my b value just keeps incrementing. Where am i going wrong?

    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();
          
    //      
    //   
       }
    }  

 

Solution

  • You're defining a and b on the beginning of the loop(), the loop function is called every time, so your a and b are cleared every time. probably you have to define then out of the loop function.
    Edit: In my example I declared the variables inside setup() function, as the guy who comment my answer said, it declares a variable only in the scope of that function, you actually need to declare it out of any function.

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

    Edit 2: Actually, your code don't do what you want. It counts 1 to 100 one time, then starts incrementing and printing b. You have to clear the a variable in your else statement to it starts counting again. I tested the code in Tinkercad and now it seems to work.
    Code used in 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;
       }
    }