Noch 'ne kleine Hilfe obendrauf. Nur noch Fragen hierzu oder zu Programmänderungen notwendig, Dank habe ich schon genug bekommen und sollte erstmal reichen
.
Code:
Deklarieren und Initialisieren
In Hauptschleife nur auf Tastendruck warten
Mit DEBOUNCE Tastendruck erkennen, entprellen und Aufruf von "Taste_gedrueckt" Unterprogramm
Ende Hauptschleife
Taste_gedrueckt:
Programmzeilen zwischen WHILE und WEND wird solange durchlaufen wie die Taste gedrückt ist (wg While Taster = 0)
Die Schleife wird alle 10ms Durchlaufen (wg waitms 10)
Die Tastendruckzeit kann der Variablen "Hundertstelsekunden" in 10ms Schritten entommen werden. Wert von 10 entspricht 100ms
In der Case Anweisung wird die Tastendruckzeit während des Drucks ständig ausgewertet und je nach Länge der Ledspeicher mit dem Szenario belegt.
Für Tastendruck kürzer als 200ms ist kein Case vorgesehen, ist ja kein Szenarioauswahl
Case 370: Zu langer Druck -> kein neues Szenario verfügbar -> Zurücksetzten Hundertstelsekunden -> Vorgaukeln eines kürzeren Druckes und Szenarioauswahl beginnt von vorne.
Vor dem WEND werden dann die LEDs während des Szenarioauswahldruckes eingeschaltet, aber nur wenn kein kurzer Tastendruck vorliegt, der ja hier noch möglich sein kann, da die Zeitmessung noch nicht zu Ende ist.
Taste wurde gelöst -> Programmzeilen nach WEND werden durchlaufen
Wenn mit langem Tastendruck eine Szenarioauswahl stattgefunden hat, wurden die LEDs ja schon entsprechend geschaltet
Also wird mit der ersten If Abfrage nur bei kurzem Tastendruck eine Aktion ausgeführt.
Die gleich folgende If Abfrage dient dazu festzustellen, ob ein- oder ausgeschaltet werden muß
Wenn also irgendeine LED (wg LED1 = 1 or LED2 = 1 or ... ) an ist, wird ausgeschaltet, sonst das Szenario eingeschaltet.
Fertig und Rücksprung in die Hauptscheife
Lesezeichen