Hallo peterfido,
Ich habe angenommen (wie p@ty erwähnt hat), daß an den LED Pins des µCs nicht direkt LEDs sitzen, sondern Stromstoßrelais, die die LEDs schalten. Die Relais bekommen während der Bedienung mit dem Taster immer nur einen Stromstoß und sind sonst stromlos. So wie ich dann den p@ty verstanden habe, soll es folgende Funktion geben:Auch scheint das Licht nicht anzubleiben, wenn der Taster losgelassen wird. Oder habe ich da nen Denkfehler?
1. System einschalten, keine LED leuchtet
2. Als erstes kurzer Tastendruck (<200ms) -> nichts passiert.
3. Taste wird lange gedrückt gehalten (>=200ms) -> Lichtszenario wird während gedrückter Taste ausgewählt
- Die drei LED Pins (Stromstoßrelais) werden bei gedrückter Taste in gewissen Zeitabständen in unterschiedlichen Kombinationen unter Strom gesetzt mit LEDx = 1 bzw. ausgeschaltet mit LEDx = 0
- Wird die Taste losgelassen, wird von allen Stromstoßrelais der Strom abgeschaltet (LEDx = 0). Das hab ich aus p@tys Programm entnommen und wurde vielleicht auch irgendwo erklärt.
- Die zuletzt unter Strom gesetzten Stromstoßrelais sollen bei folgenden kurzen Tastendrücken einen Stromstoß bekommen.
4. Taste wird kurz (<200ms), nachdem mindestens einmal nach Systemstart das Auswahlszenario durchgespielt und beendet wurde, gedrückt. Kurze Tastendrücke hintereinander schalten die ausgewählten LEDs aus und ein und aus und....
- Während der gedrückten Taste sollen die LED Pins, die beim Auswahlszenario als letztes high waren, wieder high werden.
- Wird die Taste vor Ablauf von 200ms gelöst, beginnt also nicht das Auswahlszenario, sondern die LED Pins werden direkt auf low geschaltet.
Stromstoßrelais, die an den LED Pins hängen, bekommen also einen Stromstoß, was die LEDs dann wohl toggeln läßt.
5. Nun kann wieder Punkt 3. oder 4. eintreten.
Wie das genau bei P@ty realisiert ist weis ich auch nicht, scheint aber zu laufen.
Eigentlich ja. Ist meiner Ansicht in meinem Programm aber egal. Die Entprellung wird mit dem DEBOUNCE gemacht und erst danach erreicht das Programm die Schleife, wenn der Taster stabil geschlossen ist.Die Schleife "while Taster = 0" setzt einen prellfreien Kontakt voraus.
Falls der Taster beim Lösen prellen sollte, könnte die while Schleife nochmal unabsichtlich durchlaufen werden, was aber bei den 10ms Schritten nicht wahrgenommen werden dürfte.
Wenn der Taster gelöst wird, dadurch die Schleife verlassen wird, aber noch nachprellt, ist das Programm wieder in der Hauptschleife und das DEBOUNCE fängt das Prellen ab.
Puh, das war jetzt nicht perfekte Arbeit aber hoffentlich verständlich.
Gruß
Searcher
Lesezeichen