Hallo, ich habe folgende Aufgabe: Ich möchte einen Tastendruck erkennen, der 5 Sekunden gedrückt war. Zusätzlich die gleiche Taste zwischen lang (>=500ms) und kurz (< 500ms) unterscheiden. Nun bin ich auf die Komfortroutine gestoßen: http://www.mikrocontroller.net/articles/Entprellung#Komfortroutine_.28C_f.C3.BCr_AVR.29 Ist das damit machbar? Bzw. könnte ich die 5 Sekunden aus der repeat Funktion ziehen, d.h. get_key_long() und get_key_short() zum entscheiden, ob kurz oder lang, dabei lang auf 500ms stellen und zusätzlich get_key_rpt aufrufen und jeden repeat hochzählen und so 10x500ms zu haben, um auf die 5 Sekunden zu kommen? Oder wie würdet ihr das lösen? Danke.
Indem ich das eigentliche Problem analysiere und mir dann eine Lösung dafür ausdenke - und zwar OHNE mir blind irgendwelche fremden Quellen unverstanden reinzuziehen. Also versuche es doch mal mit selber denken. W.S.
Die hier hab ich mal verbrochen: Beitrag "[ATMEGA] Code für Taster: kurz, lang, Doppelklick" Sollte sich relativ einfach anpassen lassen.
David schrieb: > Ist das damit machbar? Ja. David schrieb: > und zusätzlich get_key_rpt aufrufen Nein, das geht nicht, da es schon von get_key_long() aufgerufen wird. Die Tastenfunktionen liefern keine Zustände, sondern Ereignisse. Würde man also im gleichen Kontext für die gleiche Taste eine Funktion an 2 Stellen aufrufen, würde zufällig mal die eine und mal die andere das Ereignis lesen. Du kannst aber im Timerinterrupt, wie für die Repeatfunktion, einen 2. Zähler aufsetzen und damit nach Ablauf eine weitere Variable setzen. Allerdings halte ich schon die Doppelfunktiopn einer Taste für nicht gerade bedienfreundlich und eine 3-fach Funktion für noch unpraktischer. Ein solches Gerät kann dann wohl wirklich kein anderer als Du bedienen, ohne es irgendwann wütend an die Wand zu werfen.
W.S. schrieb: > und zwar OHNE mir blind irgendwelche fremden Quellen > unverstanden reinzuziehen. Na klar. Und die Math- und printf-Libs nimmt man auch nicht, sondern schreibt sich alles vom Urschleim an selber. Man kann durchaus fremde Libs nehmen, wenn man verstanden hat, wie sie einzusetzen sind. Oder man fragt bei Unklarheiten, daran ist nichts verwerfliches. Niemand muß das Fahrrad immer wieder von neuem erfinden. Insbesondere das Entprellen enthält diverse Fallstricke, wie man hier ja leider immer regelmäßig sehen muß. Da ist dann die Verwendung einer bewährten Lib erst recht der intelligentere Weg.
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.