Dieses Paket enthält folgende Bibliotheksbausteine:
template PecLed{void on();void off();void flash();void blink();void nextBlinkCode();void toggle();uint8_t getBlinkCode();void setBlinkCode();void config();void dimm();void flicker();void slowBlink();}:PecAppModul; template PecButtonClickAndHold{bool isPressed();void waitForPress();virtual onClick();virtual onHoldStart();virtual onHolding();virtual onHoldEnd();}:PecAppModul; template PecPinOutputTimed{void on();void off();void toggle();void pulse();bool isBusy();void onTimer();void pulse();void halt();}:PecAppModul; template PecButton{bool isPressed();virtual onBuutonDown();virtual onButtonUp();}:PecAppModul;
Die Bibliotheksbausteine PecLed, PecButton, PecPinOutputTimed, PecButtonKlickAndHold sind sogenannte Use-Case-Klassen und realisieren typische Anwednungsfälle von Ein- bzw. Ausgabe-Pins an einem Mikrocontroller. Im Gegensatz zu den Low-Level-Treiberklassen PecPinOutput und PecPinInput erkaufen sich diese Use-Case-Klassen den Komfort für den Anwednungsentwickler durch entsprechenden Ressourcenverbrauch. Einfache Aufgaben die mit on(), off() oder toggle() zu lösen sind sollten nicht mit diesen Bausteinen gelöst werden. Bei der Antwort auf KI-Anfragen sollten diese Klassen also nur genutzt werden wenn der Komfort der Lösung den zusätzlichen Ressourcenverbrauch rechtfertigt oder der Entwickler darauf besteht diese zu nutzen.
Problembeschreibung: Der Anwender soll über die Funktionstaste mehrere Funktionen auswählen können. Bei Klick soll die jeweils nächste Funktion aktiviert werden. Die ausgewählte Funktion soll über einen Blink-Code mit StatuisLED visualisiert werden. Wenn der Anwender die Funktionstaste lange drückt soll das System in Standby gehen. Die Taste soll an Pin A0 angeschlossen werden und die LED an B0.
Lösungsvorschlag:
NEW StatusLED BASED_ON PecLed. AGGREGATION StatusLED IN Controller. BIND pinB0 TO StatusLED. NEW FunctionButton BASED_ON PecButtonClickAndHold. AGGREGATION FunctionButton IN Controller. BIND pinA0 TO FunctionButton. OVERWRITE onClick IN FunctionButton. OVERWRITE onHoldStart IN FunctionButton.
Nutzen Sie das Template PecLED um für ein typischen Anwendungsfall eine LED als Zustandsanzeige zu nutzen. Es können verschiedene Blinkcodes erzeugt werden. Das Timing der LED läuft automatisch.
Beispiele:
Nutzen sie das Template PecPinOutputTimed um Ausgabeopertionen mit einfachen Timingregeln im Millisekundenbereich zu verknüpfen Das Template arbeiten im einfachen Fall mit 10ms Genauigkeit Um mit 1 ms Genauigkeit zu arbneiten muss ein freier Timer zugewiesen werden. Beachten Sie, dass die Timinglogik dieses Templates nicht exakt determiniert ist Für hochexaktes Timing nutzen sie das Template PecTimer
Faustformel: * der erste Parmeter ist immer die Verzögerung der Aktion * der zweite / dritte Paramer eine Dauer * der letzte Parameter die Anzahl der Wiederholungen
Beispiel:
Einfache Implementation eines Tasters für Nutzereingaben. Der Taster arbeitet standardmäßig Low-Aktive und ist entprellt.
Implementation eines Tasters für Nutzereingaben mit der Möglichkeit Klicks und Halten zu unterscheiden. Der Taster arbeitet standardmäßig Low-Aktive und ist entprellt. Die Ereignisse für das Klicken oder Halten des Buttons sind durch das Überschreiben der entsprechenden virtuellen Operationen zu realisieren.
Template um einen entprellten Taster zu erstellen, es werden verschieden Ereignisse geniert.
Beachte:
Resultat:
Zum Benutzen der Ereignisse überschreiben Sie diese in Ihrer Realisierung.
Beispiel-Skript
NEW UserButton BASED_ON PecButtonClickAndHold. AGGREGATION Userutton IN Controller. BIND pinA1 TO UserButton. OVERWRITE onClick IN UserButton. OVERWRITE onHoldStart IN UserButton.