Peter Dannegger schrieb:
> Ein Forum ist nicht als Einbahnstraße gedacht.
> Man sollte daher die anderen an der Lösung teilhaben lassen.
> Könnte ja sein, daß man nochmal ne Frage hat.
Keine Ahnung, wie der OP es gelöst hat, aber ich kann etwas dazu
schreiben, wie es funktioniert:
Bei dem geschilderten Blink-Problem gilt es doch dieselbe Klippe zu
umschiffen wie bei dem gerade erst vor drei Tage nachgefragten
Arduino-Warnblinker, bei dem ebenfalls der Doppel-Tasterdruck eine
dritte Blinkfunktion aktivieren sollte. Da ging es um Linkblinken,
Rechtsblinken, Warnblinken mit zwei Tastern und hier geht es um
Langblinken, Kurzblinken, Lang-Kurzblinken mit zwei Tastern. Ist fast
dasselbe.
Die Klippe besteht darin, dass der Tastaterstatus und der Blinkstatus
nur noch sehr bedingt miteinander zusammenhängen, wenn
- ein Prellen der Taster auftreten kann und
- der Zustand "beide Taster gedrückt" etwas bewirken soll
- aber der Zustand "beide Taster loslassen" nichts am Blinkstatus ändern
soll
Der Trick besteht darin sicherzustellen, dass beim Loslassen eines
Tasters keine Umschaltung im Blinkstatus stattfinden darf.
D.h. wenn nach dem Drücken beider Taster die dritte Blinkaktion
aktiviert wurde, muß diese Blinkaktion beibehalten werden, egal ob als
nächstes festgestellt wird "beide Taster unbetätigt", "linker Taster
betätigt, rechter unbetätigt" oder "rechter Taster betätigt, linker
unbetätigt". Denn beim Loslassen der beiden Tasten ist es sehr
wahrscheinlich, dass diese mit mehr oder weniger zeitlicher Verzögerung
nacheinander losgelassen werden. Die nächste Änderung im Blinkstatus
darf dann erst erfolgen, wenn vorher einmal festgestellt wurde "beide
Taster unbetätigt". Erst danach darf ein gedrückter Taster wieder zu
einer Änderung im Blinkstatus führen.
Das ist jedenfalls die Art, wie ich drei verschiedene Blinkstates mit
zwei Tastern realisiere.