Richard Kraus
/
Fahrradleuchte
Fahrradleuchte
main.cpp@0:df07211ac148, 2016-11-16 (annotated)
- Committer:
- richardkraus
- Date:
- Wed Nov 16 11:01:34 2016 +0000
- Revision:
- 0:df07211ac148
FahrradLeuchte
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
richardkraus | 0:df07211ac148 | 1 | #include "mbed.h" |
richardkraus | 0:df07211ac148 | 2 | #include "BtnEventM0.h" |
richardkraus | 0:df07211ac148 | 3 | |
richardkraus | 0:df07211ac148 | 4 | // LSB MSB |
richardkraus | 0:df07211ac148 | 5 | BusOut lb(P1_7,P1_6,P1_4,P1_3,P1_1,P1_0,LED4,LED3,LED2,LED1); |
richardkraus | 0:df07211ac148 | 6 | |
richardkraus | 0:df07211ac148 | 7 | // Statusled zeigt uns in welchem Zustand due Statemachine gerade ist |
richardkraus | 0:df07211ac148 | 8 | BusOut stLED(P1_13,P1_12); |
richardkraus | 0:df07211ac148 | 9 | |
richardkraus | 0:df07211ac148 | 10 | // BtnEventM0 erledigt für uns die Abfrage der positiven Flanke |
richardkraus | 0:df07211ac148 | 11 | BtnEventM0 sw4(P1_16), sw3(P0_23); |
richardkraus | 0:df07211ac148 | 12 | // sw4==forew sw3==backward |
richardkraus | 0:df07211ac148 | 13 | |
richardkraus | 0:df07211ac148 | 14 | |
richardkraus | 0:df07211ac148 | 15 | class FahrradLeuchte { |
richardkraus | 0:df07211ac148 | 16 | public: |
richardkraus | 0:df07211ac148 | 17 | void init() |
richardkraus | 0:df07211ac148 | 18 | { |
richardkraus | 0:df07211ac148 | 19 | state=1; t1.start(); |
richardkraus | 0:df07211ac148 | 20 | } |
richardkraus | 0:df07211ac148 | 21 | void State1Func(); |
richardkraus | 0:df07211ac148 | 22 | void State2Func(); |
richardkraus | 0:df07211ac148 | 23 | void State3Func(); |
richardkraus | 0:df07211ac148 | 24 | public: |
richardkraus | 0:df07211ac148 | 25 | void State1Action(); // Bit0 (LED) mit 10 Hz blinken |
richardkraus | 0:df07211ac148 | 26 | void State2Action(); // Bit2 (LED) mit 5 Hz blinken |
richardkraus | 0:df07211ac148 | 27 | void State3Action(); // Bit4 (LED) mit 2 Hz blinken |
richardkraus | 0:df07211ac148 | 28 | public: |
richardkraus | 0:df07211ac148 | 29 | // State sagt uns in welchem Zustand sich die Fahrradleuchte gerade befindet |
richardkraus | 0:df07211ac148 | 30 | int state; |
richardkraus | 0:df07211ac148 | 31 | Timer t1; |
richardkraus | 0:df07211ac148 | 32 | }; |
richardkraus | 0:df07211ac148 | 33 | |
richardkraus | 0:df07211ac148 | 34 | // eine Fahrradleuchte anlegen |
richardkraus | 0:df07211ac148 | 35 | FahrradLeuchte fl; |
richardkraus | 0:df07211ac148 | 36 | |
richardkraus | 0:df07211ac148 | 37 | int main(void) |
richardkraus | 0:df07211ac148 | 38 | { |
richardkraus | 0:df07211ac148 | 39 | sw3.Init(); sw4.Init(); |
richardkraus | 0:df07211ac148 | 40 | lb = 0; |
richardkraus | 0:df07211ac148 | 41 | while(1) |
richardkraus | 0:df07211ac148 | 42 | { |
richardkraus | 0:df07211ac148 | 43 | if (fl.state==1) |
richardkraus | 0:df07211ac148 | 44 | fl.State1Func(); |
richardkraus | 0:df07211ac148 | 45 | if (fl.state==2) |
richardkraus | 0:df07211ac148 | 46 | fl.State2Func(); |
richardkraus | 0:df07211ac148 | 47 | if (fl.state==3) |
richardkraus | 0:df07211ac148 | 48 | fl.State3Func(); |
richardkraus | 0:df07211ac148 | 49 | } |
richardkraus | 0:df07211ac148 | 50 | } |
richardkraus | 0:df07211ac148 | 51 | |
richardkraus | 0:df07211ac148 | 52 | void FahrradLeuchte::State1Func() |
richardkraus | 0:df07211ac148 | 53 | { |
richardkraus | 0:df07211ac148 | 54 | |
richardkraus | 0:df07211ac148 | 55 | // Einmalige Aktion beim Eintritt in die Zustandsfunktion |
richardkraus | 0:df07211ac148 | 56 | stLED = 1; // Anzeigen, dass ir im Zustand 1 sind |
richardkraus | 0:df07211ac148 | 57 | t1.reset(); |
richardkraus | 0:df07211ac148 | 58 | while(1) |
richardkraus | 0:df07211ac148 | 59 | { |
richardkraus | 0:df07211ac148 | 60 | State1Action(); |
richardkraus | 0:df07211ac148 | 61 | // Btn's abfragen und möglicherweise Zustand ändern |
richardkraus | 0:df07211ac148 | 62 | if(sw4.CheckFlag()) |
richardkraus | 0:df07211ac148 | 63 | {state= 2; return;} |
richardkraus | 0:df07211ac148 | 64 | if(sw3.CheckFlag()) |
richardkraus | 0:df07211ac148 | 65 | {state= 3; return;} |
richardkraus | 0:df07211ac148 | 66 | } |
richardkraus | 0:df07211ac148 | 67 | |
richardkraus | 0:df07211ac148 | 68 | } |
richardkraus | 0:df07211ac148 | 69 | |
richardkraus | 0:df07211ac148 | 70 | void FahrradLeuchte:: State1Action() |
richardkraus | 0:df07211ac148 | 71 | { |
richardkraus | 0:df07211ac148 | 72 | if (t1.read_ms() > 100 ) |
richardkraus | 0:df07211ac148 | 73 | { |
richardkraus | 0:df07211ac148 | 74 | t1.reset(); |
richardkraus | 0:df07211ac148 | 75 | if (lb == 0) |
richardkraus | 0:df07211ac148 | 76 | lb = 1; // Mit Bit0 blinken |
richardkraus | 0:df07211ac148 | 77 | else |
richardkraus | 0:df07211ac148 | 78 | lb = 0; |
richardkraus | 0:df07211ac148 | 79 | } |
richardkraus | 0:df07211ac148 | 80 | } |
richardkraus | 0:df07211ac148 | 81 | |
richardkraus | 0:df07211ac148 | 82 | void FahrradLeuchte::State2Func() |
richardkraus | 0:df07211ac148 | 83 | { |
richardkraus | 0:df07211ac148 | 84 | |
richardkraus | 0:df07211ac148 | 85 | } |
richardkraus | 0:df07211ac148 | 86 | |
richardkraus | 0:df07211ac148 | 87 | void FahrradLeuchte::State3Func() |
richardkraus | 0:df07211ac148 | 88 | { |
richardkraus | 0:df07211ac148 | 89 | |
richardkraus | 0:df07211ac148 | 90 | } |