hello_mbot_programmorganisation
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
hello_mbot_programmorganisation [2025/02/18 11:12] – [Beispiel] torsten.roehl | hello_mbot_programmorganisation [2025/02/27 14:51] (aktuell) – torsten.roehl | ||
---|---|---|---|
Zeile 5: | Zeile 5: | ||
Die Steuerung erfolgt hier mit Hilfe der Infrarot-Fernbedienung. | Die Steuerung erfolgt hier mit Hilfe der Infrarot-Fernbedienung. | ||
- | Alternativ kann man natürlich auch Bluetooth verwenden. Dies würde auch komplexere Abläufe ermöglichen, | + | Alternativ kann man natürlich auch Bluetooth verwenden. Dies würde auch komplexere Abläufe ermöglichen, |
+ | |||
+ | Zusätzlich (siehe Beispiel) kann der eingebaute Taster genutzt werden, um einfache Befehle direkt am mBot auszuführen. | ||
+ | // | ||
Zeile 40: | Zeile 43: | ||
void loop() { | void loop() { | ||
// step: command | // step: command | ||
- | byte cmd = read(); // Funktion, die IR-Befehle einliest | + | byte cmd = read(); // Funktion, die Steuer-Befehle einliest |
// step: state - Befehlsverarbeitungund ggf. Zustand wechseln | // step: state - Befehlsverarbeitungund ggf. Zustand wechseln | ||
Zeile 75: | Zeile 78: | ||
===== Beispiel ===== | ===== Beispiel ===== | ||
+ | <WRAP center round tip 90%> | ||
+ | Der **mBot** soll in diesem Beispiel die Zustände der LEDs über einen Taster ändern. Bei jedem Tastendruck wechselt die LED zyklisch zwischen drei Zuständen: **aus**, <color # | ||
- | Dieses Programm steuert eine RGB-LED mit einem Taster. Die LED wechselt bei jedem Tastendruck zyklisch zwischen drei Zuständen: | + | * **STATE_OFF** → LED **aus** |
+ | * **STATE_RED** → <color #ed1c24>LED **rot**</ | ||
+ | * **STATE_GREEN** → <color # | ||
+ | </ | ||
- | * **STATE_OFF** → LED aus | ||
- | * **STATE_RED** → LED rot | ||
- | * **STATE_GREEN** → LED grün | ||
- | === Funktionsweise === | ||
- | - Der Taster wird über `analogRead(PIN_BUTTON)` ausgelesen. | ||
- | - Die Funktion `isButtonPressed()` erkennt den Tastendruck und verhindert mehrfaches Zählen (Entprellung). | ||
- | - Die Funktion `read()` zählt die Tasterbetätigungen und wechselt durch die Zustände: **OFF → RED → GREEN → OFF**. | ||
- | - Die Funktion `decode(cmd)` wandelt den Zählerwert in einen **State** um. | ||
- | - Die entsprechenden **LED-Funktionen** setzen die LED-Farbe je nach Zustand. | ||
- | |||
- | === Fazit === | ||
- | Das Programm ermöglicht eine einfache Steuerung einer LED über einen Taster mit einer **Zustandsmaschine**. | ||
==== Quellcode (engl. Sourcecode) ==== | ==== Quellcode (engl. Sourcecode) ==== | ||
Zeile 121: | Zeile 117: | ||
int cmd = read(); | int cmd = read(); | ||
- | // step: state - Befehlsverarbeitungund ggf. Zustand wechseln | + | // step: state |
state = decode(cmd); | state = decode(cmd); | ||
Zeile 140: | Zeile 136: | ||
/* | /* | ||
- | | + | |
- | */ | + | */ |
Zeile 178: | Zeile 174: | ||
return STATE_OFF; | return STATE_OFF; | ||
} | } | ||
+ | |||
void actionRed() { | void actionRed() { | ||
led.setColorAt(1, | led.setColorAt(1, | ||
Zeile 183: | Zeile 180: | ||
led.show(); | led.show(); | ||
} | } | ||
+ | |||
void actionGreen() { | void actionGreen() { | ||
led.setColorAt(1, | led.setColorAt(1, | ||
Zeile 188: | Zeile 186: | ||
led.show(); | led.show(); | ||
} | } | ||
+ | |||
void actionOff() { | void actionOff() { | ||
led.setColorAt(1, | led.setColorAt(1, | ||
Zeile 197: | Zeile 196: | ||
=== Erklärungen zum Quellcode === | === Erklärungen zum Quellcode === | ||
- | |||
- | ==== Arduino Code ==== | ||
- | === Erklärungen zum Quellcode === | + | - Der Taster wird über '' |
+ | - Die Funktion'' | ||
+ | - Die Funktion '' | ||
+ | - **OFF → RED → GREEN → OFF**. | ||
+ | - Die Funktion '' | ||
+ | - Die entsprechenden **LED-Funktionen** setzen die LED-Farbe je nach Zustand. | ||
+ | |||
+ | |||
+ | Das Programm ermöglicht eine einfache Steuerung einer LED über einen Taster mit einer **Zustandsmaschine**. | ||
- | ==== Bedienung des Programms==== | ||
hello_mbot_programmorganisation.1739877171.txt.gz · Zuletzt geändert: 2025/02/18 11:12 von torsten.roehl