Richard Kraus
/
Fahrradleuchte
Fahrradleuchte
main.cpp
- Committer:
- richardkraus
- Date:
- 2016-11-16
- Revision:
- 0:df07211ac148
File content as of revision 0:df07211ac148:
#include "mbed.h" #include "BtnEventM0.h" // LSB MSB BusOut lb(P1_7,P1_6,P1_4,P1_3,P1_1,P1_0,LED4,LED3,LED2,LED1); // Statusled zeigt uns in welchem Zustand due Statemachine gerade ist BusOut stLED(P1_13,P1_12); // BtnEventM0 erledigt für uns die Abfrage der positiven Flanke BtnEventM0 sw4(P1_16), sw3(P0_23); // sw4==forew sw3==backward class FahrradLeuchte { public: void init() { state=1; t1.start(); } void State1Func(); void State2Func(); void State3Func(); public: void State1Action(); // Bit0 (LED) mit 10 Hz blinken void State2Action(); // Bit2 (LED) mit 5 Hz blinken void State3Action(); // Bit4 (LED) mit 2 Hz blinken public: // State sagt uns in welchem Zustand sich die Fahrradleuchte gerade befindet int state; Timer t1; }; // eine Fahrradleuchte anlegen FahrradLeuchte fl; int main(void) { sw3.Init(); sw4.Init(); lb = 0; while(1) { if (fl.state==1) fl.State1Func(); if (fl.state==2) fl.State2Func(); if (fl.state==3) fl.State3Func(); } } void FahrradLeuchte::State1Func() { // Einmalige Aktion beim Eintritt in die Zustandsfunktion stLED = 1; // Anzeigen, dass ir im Zustand 1 sind t1.reset(); while(1) { State1Action(); // Btn's abfragen und möglicherweise Zustand ändern if(sw4.CheckFlag()) {state= 2; return;} if(sw3.CheckFlag()) {state= 3; return;} } } void FahrradLeuchte:: State1Action() { if (t1.read_ms() > 100 ) { t1.reset(); if (lb == 0) lb = 1; // Mit Bit0 blinken else lb = 0; } } void FahrradLeuchte::State2Func() { } void FahrradLeuchte::State3Func() { }