Frage zur Sketch realisierung

Hallo Community,

ich weiß leider nicht wie ich folgendes Problem löse.
Ich möchte in einem Schritt eines Zustandsdiagramms mit einem Taster (U) zwei unterschiedliche Anzeigen darstellen. Wie ich die Anzeige mache und den Taster Abfrage ist mir bekannt.

Hier mal ein Ausschnitt des Schritts. Das Problem der Programmierung ist das die dritte Anweisung nach dem erfüllen der zweiten Anweisung erfüllt ist. Das Ganze soll ohne ein delay umgesetzt werden. Falls jmd. eine Idee hätte wäre ich sehr dankbar.

if(state == Weckera){
  key = keypad.getKey();
  wa = false

  if(key == 'U' && wa == true){
    wa = false;
    u8g2.clearBuffer();
    u8g2.setCursor(1, 10);    //x und y Wert
    u8g2.print("Wecker aus");
    u8g2.sendBuffer();
  }

  if(key == 'U' && wa == false){
    wa = true;
    u8g2.clearBuffer();
    u8g2.setCursor(1, 10);    //x und y Wert
    u8g2.print("Wecker ein");
    u8g2.sendBuffer();
  }

Es wäre extrem hilfreich nicht nur diesen Programmausschnitt sondern das ganze Programm zu sehen.
Die Beschreibung

Ich möchte in einem Schritt eines Zustandsdiagramms mit einem Taster (U) zwei unterschiedliche Anzeigen darstellen.

Verstehe ich nicht. Für mich ist ein Zustandsdiagramm eine graphische Darstellung des Temperatur- /Druckverhaltens verhaltens eines Stoffes. Zum Beispiel Wasser. Bei dir ist es garantiert etwas anderes aber was genau?
Bescrheibe einfach mal in Alltagsworten was da alles auf der Anzeige zusehen sein wird und wie sich die Anzeige durch Tastendrücke ändert.
Der Variablenname "wa" sagt mir überhaupt nichts. Wenn wir deinen Code verstehen sollen dann solltest du selbsterklärende Variablennamen verwenden.
Das ganze scheint eine Art Schrittkette zu sein. Was spricht denn dagegen doch zwei einzelne Schritte daraus zu machen?
viele Grüße Stefan

Hi

Dann packe doch beide IFs zusammen - in Beiden wird nach 'U' abgefragt.
Innerhalb dieser IF entscheidest Du je nach 'wa', was passiert.

Wibei SO nie in den oberen IF-Zweig gesprungen wird, da 'wa' vor der IF auf false gesetzt wird.

if (state == Weckera) {
  key = keypad.getKey();
  wa = false

  if (key == 'U') {
    //key ist 'U'
    if (wa == true) {
      //und wa ist true
      wa = false;
      u8g2.clearBuffer();
      u8g2.setCursor(1, 10);    //x und y Wert
      u8g2.print("Wecker aus");
      u8g2.sendBuffer();
    } else {
      //und wa ist false
      wa = true;
      u8g2.clearBuffer();
      u8g2.setCursor(1, 10);    //x und y Wert
      u8g2.print("Wecker ein");
      u8g2.sendBuffer();
    }
  }
}

Mir scheint, Du möchtes den Wecker AN bzw. AUS schalten - So aber wohl nicht.
oder das wa=false; oberhalb der IF muß weg - damit Du immer, wenn 'Weckera' anliegt auf den Druck auf U reagiert werden kann.

Werden sonst keine Tastendrücke ausgewertet?
Wenn Doch - was hat das Einlesen des Taster hier drin zu suchen?

MfG