Hallo Wie mache ich es wenn ich eine taste 2 mal abfragen möchte um ein ganz einfaches Menü zubekommen ? Meine Vorstellung und das Ergebnis reichen von sollte gehen in der Theorie zu geht gar nicht in der Praxis. Hier mal mein Code Kunstwerk: keypressed = myKeypad.getKey(); if (keypressed == '3') {// xxx starten lcd1.clear(); lcd1.setBacklight(HIGH); lcd1.backlight(); keypressed = 'E'; ---E um Eingabe von taste 3 zu überschreiben if (PinCON) ------Abfrage ob xxx schön läuft oder nicht { lcd1.setCursor(0, 0); lcd1.print(F("xxx Gestartet")); } else { lcd1.setCursor(0, 0); lcd1.print(F("xxx Ist Aus")); } lcd1.setCursor(0, 1); lcd1.print(F("druck T1 = an")); ----- taste 1 auf dem tastenpad lcd1.setCursor(0, 2); lcd1.print(F("druck T2 = aus")); ---- taste 2 auf dem tastenpad lcd1.setCursor(0, 3); lcd1.print(F("Abbrechen Warten")); delay(2000);-----zeit zum überlegen und wurst finger umparken. ----------------------Soweit alles ok und geht auch. Das erneute einlesen der tasten was jetzt folgt übergeht er aber einfach ? keypressed = myKeypad.getKey(); delay(200); if (keypressed == '1') { lcd1.setCursor(0, 0); lcd1.print(F("Wird Eingeschalten")); lcd1.setCursor(0, 1); lcd1.print(F("Bitte Warten")); digitalWrite(34, LOW); delay(1000); digitalWrite(34, HIGH); lcd1.setBacklight(LOW); lcd1.clear(); keypressed = 'E'; delay(2000); } if (keypressed == '2') { lcd1.setCursor(0, 0); lcd1.print(F("Wird Ausgeschalten")); lcd1.setCursor(0, 1); lcd1.print(F("Bitte Warten")); digitalWrite(34, LOW); delay(1700); digitalWrite(34, HIGH); delay(2000); digitalWrite(34, LOW); delay(1700); digitalWrite(34, HIGH); lcd1.setBacklight(LOW); lcd1.clear(); keypressed = 'E'; } } Jemand eine Idee ? Danke
:
Bearbeitet durch User
DAVID -. schrieb: > keypressed = myKeypad.getKey(); Niemand weiß, was dieses "myKeypad.getKey" macht. DAVID -. schrieb: > keypressed = myKeypad.getKey(); > if (keypressed == '3') {// xxx starten > ... > keypressed = 'E'; ---E um Eingabe von taste 3 zu überschreiben Das ist Mumpitz, 'E' wird immer von myKeypad.getKey überschrieben, also nirgends ausgewertet. DAVID -. schrieb: > delay(2000);-----zeit zum überlegen und wurst finger umparken. Du willst also den Bediener zur Weißglut bringen? Sowas macht man über Flankenerkennung. Typisch hat man im Timerinterrupt eine Routine, die Tasten einliest, entprellt und Ereignisflags (Flanke) dem Main übergibt.
Danke E wird und soll auch gar nicht ausgewertet werden es dienst NUR dazu den gelesenen wert (0-D) zu überschreiben um eine Fehlauswertung zu vermeiden. Es geht in dem teil nur um die taste 1 (1) und taste 2 (2) if (keypressed == '1') { if (keypressed == '2') { Die tasten werden auch nicht per interput ausgewertet sondern nur zu bestimmen Zeiten. Die Funktion myKeypad.getKey ist eigentlich hier gut beschreiben. https://funduino.de/nr-04-tastenfeld Dein Problem mit der zeit kann ich nicht nachvollziehen. es ist nötig das Display ordentlich zu lesen und die finger umzuparken. wo für 2 sek reichen sollten. Auf den einbau 2 weiterer tasten wollte ich verzichten.
:
Bearbeitet durch User
DAVID -. schrieb: > Wie mache ich es wenn ich eine taste 2 mal abfragen möchte um ein ganz > einfaches Menü zubekommen ? > > Meine Vorstellung und das Ergebnis reichen von sollte gehen in der > Theorie zu geht gar nicht in der Praxis. Hi, schon mal drüber nachgedacht, die Menü Navigation mit einer Statemachine abzubilden? vg
DAVID -. schrieb: > Dein Problem mit der zeit kann ich nicht nachvollziehen. > es ist nötig das Display ordentlich zu lesen und die finger umzuparken. > wo für 2 sek reichen sollten. Kennst Du wirklich jemanden, der soviel Geduld hat? Die Firmware sollte spätestens nach 0,1s den nächsten Tastendruck akzeptieren.
Peter D. schrieb: > Die Firmware sollte spätestens nach 0,1s den nächsten Tastendruck > akzeptieren. Naja, Sekretärinnen mit 10-Finger-Blind sind eher selten geworden, bei Maschinensteuerungen kann es auch etwas langsamer gehen - aber 2 .. 3 Tasten pro Sekunde sollte man schon drücken können. Georg
Führe deinen Code im Debugger aus und schau wo es hackt.
Ein Debugger hmm müsste ich mich mal einlesen wie so was geht und was ich da brauche. >Kennst Du wirklich jemanden, der soviel Geduld hat?< >Die Firmware sollte spätestens nach 0,1s den nächsten Tastendruck< >akzeptieren.< Du alter Zocker :-) also ich für mein teil brauche mehr als 100 ms um einen text zulesen und dadrauf mit der richtigen taste zureagieren. Da ich so recht keine Lösung finde und es morgen mittag laufen muss(soll) wird mir nix anderes übrig bleiben als 2 eigene Taster zu verbauen. mal sehen ob ich morgen noch eine Erleuchtung bekomme.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.