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
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?