Integer zurücksetzen

Hallo Ich programmiere gerade einen Timer, welcher Sekunden und Minuten zählt.
Hier der Code:

int button = 2;
int led = 8;
int Sekunden = 0;
int Minuten;

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);

void setup(){
  pinMode(button, INPUT);
  pinMode(led, OUTPUT);
  pinMode(4, OUTPUT);
 
  lcd.init();
  lcd.backlight();
  lcd.print("Timer:");
  lcd.setCursor(0, 1);
  lcd.print("von Johannes T.");
  delay(4000);
  lcd.clear();
}


void loop(){
lcd.setCursor(0, 0);
lcd.print("Timer:");
lcd.setCursor(0, 1);

while(Sekunden < 59){
  digitalWrite(4, LOW);
  Sekunden++;
  lcd.setCursor(0, 1);
  lcd.print(Minuten);
  lcd.print(":");
  lcd.print(Sekunden);
  delay(1000);
  
  }
    Minuten++;
    Sekunden=0;

digitalWrite(4, HIGH);
}

Ich habe das Problem, dass die Sekunden nicht zurückgesetzt werden. Sie werde zwar zurückgesetzt aber der Timer zählt dann: 19, 29, 39, 49 ,59, 69, 79, 89, 99, 19, 11 u.s.w.
Wie kann ich das fixen ?

if(Sekunden <10);
lcd.print(" ");
lcd.print(Sekunden);

Danke für deine schnelle Hilfe.
Gibt es nicht einen schöneren Weg, ohne das die eine Stelle leer bleibt ?

Du kannst es auch linksbündig machen. Aber so oder so musst du Text oder Zahlen immer auf eine konstante Breite formatieren.

Danke dir
Ich habs:

if(Sekunden <9){
  lcd.setCursor(0, 1);  
  lcd.print(Minuten);
  lcd.print(":");
  lcd.print(Sekunden);
  lcd.print(" ");
  Sekunden++;
  delay(1000);
  digitalWrite(4, LOW);
  }
  lcd.setCursor(0, 1);
  lcd.print(Minuten);
  lcd.print(":");
  if (Sekunden<10) {
    lcd.print("0");
  }
  lcd.print(Sekunden);

oder

  lcd.setCursor(0, 1);
  if (Minuten<10) {
    lcd.print("0");
  }
  lcd.print(Minuten);
  lcd.print(":");
  if (Sekunden<10) {
    lcd.print("0");
  }
  lcd.print(Sekunden);

DerTechniikHelfer:
Danke für deine schnelle Hilfe.
Gibt es nicht einen schöneren Weg, ohne das die eine Stelle leer bleibt ?

Dein Timer-Code hat noch ein weiteres Problem: Zu jeder vollen Minute wird “Sekunde 0” übersprungen, denn in Deiner Programmlogik findet die Ausgabe auf Display und das delay() nur bei “while(Sekunden < 59)” statt.

Deshalb wäre nicht die Anzeige und das Delay von der Überlaufbedingung abhängig zu machen, sondern nur der Überlauf auf die nächste Minute, etwa:

  Sekunden++;
  if (Sekunden>=60)
  {
    Minuten++;
    Sekunden=0;
  }

Und danach folgt dann jedesmal eine Ausgabe, in jeder Sekunde und ohne die Null-Sekunde jeder vollen Minute zu überspringen.

Und eine “schöne Formatierung” mit führender Null in den Zahlen kannst Du mit den Funktionen sprintf() bzw. snprintf() hinbekommen, indem Du zunächst einen String (“char array”) wie gewünscht formatierst, der dann auf LCD ausgegeben wird, etwa:

  char buf[11]; // definiere einen nullterminierten String-Puffer
  snprintf(buf,sizeof(buf),"%02d:%02d",Minuten, Sekunden); // formatiere die Zeit als nullterminierten String
  lcd.setCursor(0, 1); // platziere die Schreibmarke
  lcd.print(buf);  // gib den String auf LCD aus