Button-Auswertung abhängig von Dauer

Hallo,

hatte mal einen Link "gebookmarked" (was für ein dämliches Wort), in dem es um die Tasterabfrage eines Tasters ging, der abhängig von der Länge, die man ihn drückt unterschiedliche "Aktionen" auslöst. Leider kann ich ihn im Netz nicht mehr finden. Das Ganze war äußerst verständlich und gut lesbar.

  1. Kurz Tippen = "Aktion a"
  2. Doppeltippen = "Aktion b"
  3. Taster über "Zeitdauer x" gedrückt halten = "Aktion c"

Evtl. kann mir hier jmd weiterhelfen..?

Gruß Chris

hust

Chris72622:
hust

Gesundheit :wink: :wink:

Danke.

Die Birkenpollen machen mich echt fertig zur Zeit. :wink:

Gruß Chris

Also Ablauftechnisch sollte es etwa so aussehen:

Ein IF ob der Button HIGH steht. Wenn der Button HIGH steht ein Flag setzen und einen (oder gleich zwei) Timer aktivieren (z.B. millis() und millis()+x)
Ein weiteres IF, Wenn der Button LOW steht und der Flag gesetzt wurde. Dann abprüfen ob

  • der timer kleiner gleich "antippen" war und einen zweiten Timer sowie flag setzten
  • der zweite Timer kleiner gleich "antippen 2" war.
  • der timer größer gleich "lange drücken" war

anschließend die Flags und die Timer löschen und die jeweilige Aktion ausführen.

Nicht ganz, da soll ein Doppeltippen vorkommen.

Darum muß nach dem LOW kontrolliert werden ob ein langes Drücken war. alls ja das machen was dem langen drücken entspricht.
Falls es ein kurzes Drücken war nochmal x Zeit warten ob ein HIGH kommt und dann entscheiden ob es ein kurzes Drücken war oder ein doppeldrücken ist.

Grüße Uwe

Ich würde eben beim loslassen entscheiden, ob es ein langes oder kurzes drücken war - beim kurzen gibts s noch die Möglichkeit auf ein zweites tippen, beim langen drücken entfällt es komplett. Hat den Vorteil, dass dein Programm nicht abwarten muss, bis minimum die Länge des langen drucken abgelaufen ist um die Aktion zu starten.