Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
You are viewing an older revision! See the latest version
Homepage/Lauflicht
« HomepageIn diesem Program wird das Lauflicht mit 2 Buttons gesteuert! Dieser muss immer gedrückt bleiben, um die gewünschte Aktion durchzuführen.
- Button 1 -> Lauflicht nach links
- Button 2 -> Lauflicht nach rechts
- Button 1&2 -> 4er Lauflicht (abwechselnd rechts und links)
- kein Button -> Kein Lauflicht
Es wird auch ein Timer für die unterschiedlichen Frequenzen verwendet!
#include <mbed.h> BusIn button(PA_1, PA_3); BusOut leds(PA_12, PB_0, PB_1, PA_8, PB_5, PB_4, PA_7, PB_3); Timer tim1; // Timer init int x = 0; // Zum abfragen, ob das Buttonevent gleich ist oder nicht void Button1(); // einzel-Lauflicht nach links void Button2(); // einzel-Lauflicht nach rechts void Button12(); // Umschalten (rechte Seite, dann linke Seite usw.) void Button0(); // Zurücksetzen (alle LEDs LOW) void Reset(int setValue); // Setzt Timer und Ausgänge zurück bei Änderung des BusIn wertes (Event) int main() { // Startet den Timer tim1.start(); while(1) { // Abfragen beider ButtonStates und jeweilige Aktion ausführen (PullDown --> Negative Logik) if (button == 0b00) Button12(); else if (button == 0b10) Button1(); else if (button == 0b01) Button2(); else Button0(); } } // Zurücksetzen bei Änderung der gedrückten Buttons void Reset(int setValue) { if (x != setValue) { leds = 0; tim1.reset(); x = setValue; } } // Wenn Button 1 gedrückt wird void Button1() { Reset(1); if (tim1.read_ms() >= 200) { // Timer zurücksetzen tim1.reset(); // LED - Steuerung leds = leds << 1; if (leds == 0) leds = 0b00000001; } } // Wenn Button 2 gedrückt wird void Button2() { Reset(2); if (tim1.read_ms() >= 80) { // Timer zurücksetzen tim1.reset(); // LED - Steuerung leds = leds >> 1; if (leds == 0) leds = 0b10000000; } } // Wenn Button 1 und Button 2 gedrückt sind void Button12() { Reset(3); if (tim1.read_ms() >= 500) { // Timer zurücksetzen tim1.reset(); // LED - Steuerung if (leds == 0b11110000) leds = 0b00001111; else if (leds == 0b00001111) leds = 0b11110000; else leds = 0b00001111; } } // Wenn kein Button gedrückt wird void Button0() { Reset(0); }