Fahrradleuchte

Dependencies:   mbed

Committer:
richardkraus
Date:
Wed Nov 16 11:01:34 2016 +0000
Revision:
0:df07211ac148
FahrradLeuchte

Who changed what in which revision?

UserRevisionLine numberNew 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 }