Erstellt für das Schulfach TINF
You are viewing an older revision! See the latest version
Homepage/Lauflicht
« HomepageIn diesem Program wird das Lauflicht mit 2 Buttons gesteuert! Ist der 1.Button gedrückt, Lauflicht nach links. Ist der 2. Button gedrückt, Lauflicht nach rechts. Sind beide Buttons gedrückt, lösen sie ein anderes Lauflicht aus. Wenn keiner gedrückt ist, hat man kein Lauflicht.
Es wird ein Timer 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 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) { Button0(); 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 bzw. ein ButtonEvent-Wechsel stattfindet void Button0() { // LEDs werden zurückgesetzt leds = 0; }