Florian Maier
/
M0board_03_Fahrradleuchte
M0 Board
main.cpp@0:efbd818aa4fe, 2018-01-18 (annotated)
- Committer:
- FlorianMaier
- Date:
- Thu Jan 18 12:08:08 2018 +0000
- Revision:
- 0:efbd818aa4fe
Fahrradleuchte m0Board
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
FlorianMaier | 0:efbd818aa4fe | 1 | #include "mbed.h" |
FlorianMaier | 0:efbd818aa4fe | 2 | #include "BtnEventM0.h" |
FlorianMaier | 0:efbd818aa4fe | 3 | |
FlorianMaier | 0:efbd818aa4fe | 4 | BusOut lb(P1_7,P1_6,P1_4,P1_3,P1_1,P1_0,LED4,LED3,LED2,LED1); |
FlorianMaier | 0:efbd818aa4fe | 5 | |
FlorianMaier | 0:efbd818aa4fe | 6 | BusOut stLED(P1_13,P1_12); |
FlorianMaier | 0:efbd818aa4fe | 7 | |
FlorianMaier | 0:efbd818aa4fe | 8 | BtnEventM0 sw4(P1_16), sw3(P0_23); |
FlorianMaier | 0:efbd818aa4fe | 9 | |
FlorianMaier | 0:efbd818aa4fe | 10 | class FahrradLeuchte |
FlorianMaier | 0:efbd818aa4fe | 11 | { |
FlorianMaier | 0:efbd818aa4fe | 12 | public: |
FlorianMaier | 0:efbd818aa4fe | 13 | void Init() |
FlorianMaier | 0:efbd818aa4fe | 14 | { |
FlorianMaier | 0:efbd818aa4fe | 15 | state = 1; t1.start(); |
FlorianMaier | 0:efbd818aa4fe | 16 | } |
FlorianMaier | 0:efbd818aa4fe | 17 | public: |
FlorianMaier | 0:efbd818aa4fe | 18 | void State1Func(); |
FlorianMaier | 0:efbd818aa4fe | 19 | void State2Func(); |
FlorianMaier | 0:efbd818aa4fe | 20 | void State3Func(); |
FlorianMaier | 0:efbd818aa4fe | 21 | public: |
FlorianMaier | 0:efbd818aa4fe | 22 | void State1Action(); // Bit0 ( LED ) mit 10 Hz blinken |
FlorianMaier | 0:efbd818aa4fe | 23 | void State2Action(); // Bit2 ( LED ) mit 5 Hz blinken |
FlorianMaier | 0:efbd818aa4fe | 24 | void State3Action(); // Bit4 ( LED ) mit 2 Hz blinken |
FlorianMaier | 0:efbd818aa4fe | 25 | public: |
FlorianMaier | 0:efbd818aa4fe | 26 | // State sagt uns in welchem Zustand sich die FahrradLeuchte gerade befindet |
FlorianMaier | 0:efbd818aa4fe | 27 | int state; |
FlorianMaier | 0:efbd818aa4fe | 28 | Timer t1; |
FlorianMaier | 0:efbd818aa4fe | 29 | }; |
FlorianMaier | 0:efbd818aa4fe | 30 | |
FlorianMaier | 0:efbd818aa4fe | 31 | // Eine FahrradLeuchte anlegen |
FlorianMaier | 0:efbd818aa4fe | 32 | FahrradLeuchte fl; |
FlorianMaier | 0:efbd818aa4fe | 33 | |
FlorianMaier | 0:efbd818aa4fe | 34 | int main(void) |
FlorianMaier | 0:efbd818aa4fe | 35 | { |
FlorianMaier | 0:efbd818aa4fe | 36 | sw3.Init(); sw4.Init(); |
FlorianMaier | 0:efbd818aa4fe | 37 | fl.Init(); |
FlorianMaier | 0:efbd818aa4fe | 38 | lb = 0; |
FlorianMaier | 0:efbd818aa4fe | 39 | while(1) |
FlorianMaier | 0:efbd818aa4fe | 40 | { |
FlorianMaier | 0:efbd818aa4fe | 41 | if (fl.state == 1) |
FlorianMaier | 0:efbd818aa4fe | 42 | fl.State1Func(); |
FlorianMaier | 0:efbd818aa4fe | 43 | if (fl.state == 2) |
FlorianMaier | 0:efbd818aa4fe | 44 | fl.State2Func(); |
FlorianMaier | 0:efbd818aa4fe | 45 | if (fl.state == 3) |
FlorianMaier | 0:efbd818aa4fe | 46 | fl.State3Func(); |
FlorianMaier | 0:efbd818aa4fe | 47 | } |
FlorianMaier | 0:efbd818aa4fe | 48 | } |
FlorianMaier | 0:efbd818aa4fe | 49 | |
FlorianMaier | 0:efbd818aa4fe | 50 | void FahrradLeuchte::State1Func() |
FlorianMaier | 0:efbd818aa4fe | 51 | { |
FlorianMaier | 0:efbd818aa4fe | 52 | // einmalige Aktion beim Eintritt in die Zustandsfunktion |
FlorianMaier | 0:efbd818aa4fe | 53 | stLED = 1; // Anzeigen, dass im Zustand 1 sind |
FlorianMaier | 0:efbd818aa4fe | 54 | t1.reset(); |
FlorianMaier | 0:efbd818aa4fe | 55 | while(1) |
FlorianMaier | 0:efbd818aa4fe | 56 | { |
FlorianMaier | 0:efbd818aa4fe | 57 | // Btn's abfragen und möglicherweise Zustand ändern |
FlorianMaier | 0:efbd818aa4fe | 58 | State1Action(); |
FlorianMaier | 0:efbd818aa4fe | 59 | if (sw4.CheckFlag()) |
FlorianMaier | 0:efbd818aa4fe | 60 | { |
FlorianMaier | 0:efbd818aa4fe | 61 | state = 2; return; |
FlorianMaier | 0:efbd818aa4fe | 62 | } |
FlorianMaier | 0:efbd818aa4fe | 63 | if (sw3.CheckFlag()) |
FlorianMaier | 0:efbd818aa4fe | 64 | { |
FlorianMaier | 0:efbd818aa4fe | 65 | state = 3; return; |
FlorianMaier | 0:efbd818aa4fe | 66 | } |
FlorianMaier | 0:efbd818aa4fe | 67 | } |
FlorianMaier | 0:efbd818aa4fe | 68 | } |
FlorianMaier | 0:efbd818aa4fe | 69 | |
FlorianMaier | 0:efbd818aa4fe | 70 | |
FlorianMaier | 0:efbd818aa4fe | 71 | void FahrradLeuchte::State1Action() |
FlorianMaier | 0:efbd818aa4fe | 72 | { |
FlorianMaier | 0:efbd818aa4fe | 73 | if (t1.read_ms() > 100) |
FlorianMaier | 0:efbd818aa4fe | 74 | { |
FlorianMaier | 0:efbd818aa4fe | 75 | t1.reset(); |
FlorianMaier | 0:efbd818aa4fe | 76 | if (lb == 0) |
FlorianMaier | 0:efbd818aa4fe | 77 | lb = 1; // Mit Bit0 blinken |
FlorianMaier | 0:efbd818aa4fe | 78 | else |
FlorianMaier | 0:efbd818aa4fe | 79 | lb = 0; |
FlorianMaier | 0:efbd818aa4fe | 80 | } |
FlorianMaier | 0:efbd818aa4fe | 81 | } |
FlorianMaier | 0:efbd818aa4fe | 82 | |
FlorianMaier | 0:efbd818aa4fe | 83 | void FahrradLeuchte::State2Func() |
FlorianMaier | 0:efbd818aa4fe | 84 | { |
FlorianMaier | 0:efbd818aa4fe | 85 | |
FlorianMaier | 0:efbd818aa4fe | 86 | // einmalige Aktion beim Eintritt in die Zustandsfunktion |
FlorianMaier | 0:efbd818aa4fe | 87 | stLED = 2; // Anzeigen, dass im Zustand 1 sind |
FlorianMaier | 0:efbd818aa4fe | 88 | t1.reset(); |
FlorianMaier | 0:efbd818aa4fe | 89 | while(1) |
FlorianMaier | 0:efbd818aa4fe | 90 | { |
FlorianMaier | 0:efbd818aa4fe | 91 | // Btn's abfragen und möglicherweise Zustand ändern |
FlorianMaier | 0:efbd818aa4fe | 92 | State2Action(); |
FlorianMaier | 0:efbd818aa4fe | 93 | if (sw4.CheckFlag()) |
FlorianMaier | 0:efbd818aa4fe | 94 | { |
FlorianMaier | 0:efbd818aa4fe | 95 | state = 3; return; |
FlorianMaier | 0:efbd818aa4fe | 96 | } |
FlorianMaier | 0:efbd818aa4fe | 97 | if (sw3.CheckFlag()) |
FlorianMaier | 0:efbd818aa4fe | 98 | { |
FlorianMaier | 0:efbd818aa4fe | 99 | state = 1; return; |
FlorianMaier | 0:efbd818aa4fe | 100 | } |
FlorianMaier | 0:efbd818aa4fe | 101 | } |
FlorianMaier | 0:efbd818aa4fe | 102 | |
FlorianMaier | 0:efbd818aa4fe | 103 | } |
FlorianMaier | 0:efbd818aa4fe | 104 | |
FlorianMaier | 0:efbd818aa4fe | 105 | void FahrradLeuchte::State2Action() |
FlorianMaier | 0:efbd818aa4fe | 106 | { |
FlorianMaier | 0:efbd818aa4fe | 107 | if (t1.read_ms() > 50) |
FlorianMaier | 0:efbd818aa4fe | 108 | { |
FlorianMaier | 0:efbd818aa4fe | 109 | t1.reset(); |
FlorianMaier | 0:efbd818aa4fe | 110 | if (lb == 0) |
FlorianMaier | 0:efbd818aa4fe | 111 | lb = 2; // Mit Bit0 blinken |
FlorianMaier | 0:efbd818aa4fe | 112 | else |
FlorianMaier | 0:efbd818aa4fe | 113 | lb = 0; |
FlorianMaier | 0:efbd818aa4fe | 114 | } |
FlorianMaier | 0:efbd818aa4fe | 115 | } |
FlorianMaier | 0:efbd818aa4fe | 116 | |
FlorianMaier | 0:efbd818aa4fe | 117 | void FahrradLeuchte::State3Func() |
FlorianMaier | 0:efbd818aa4fe | 118 | { |
FlorianMaier | 0:efbd818aa4fe | 119 | // einmalige Aktion beim Eintritt in die Zustandsfunktion |
FlorianMaier | 0:efbd818aa4fe | 120 | stLED = 3; // Anzeigen, dass im Zustand 1 sind |
FlorianMaier | 0:efbd818aa4fe | 121 | t1.reset(); |
FlorianMaier | 0:efbd818aa4fe | 122 | while(1) |
FlorianMaier | 0:efbd818aa4fe | 123 | { |
FlorianMaier | 0:efbd818aa4fe | 124 | // Btn's abfragen und möglicherweise Zustand ändern |
FlorianMaier | 0:efbd818aa4fe | 125 | State3Action(); |
FlorianMaier | 0:efbd818aa4fe | 126 | if (sw4.CheckFlag()) |
FlorianMaier | 0:efbd818aa4fe | 127 | { |
FlorianMaier | 0:efbd818aa4fe | 128 | state = 1; return; |
FlorianMaier | 0:efbd818aa4fe | 129 | } |
FlorianMaier | 0:efbd818aa4fe | 130 | if (sw3.CheckFlag()) |
FlorianMaier | 0:efbd818aa4fe | 131 | { |
FlorianMaier | 0:efbd818aa4fe | 132 | state = 2; return; |
FlorianMaier | 0:efbd818aa4fe | 133 | } |
FlorianMaier | 0:efbd818aa4fe | 134 | } |
FlorianMaier | 0:efbd818aa4fe | 135 | } |
FlorianMaier | 0:efbd818aa4fe | 136 | |
FlorianMaier | 0:efbd818aa4fe | 137 | void FahrradLeuchte::State3Action() |
FlorianMaier | 0:efbd818aa4fe | 138 | { |
FlorianMaier | 0:efbd818aa4fe | 139 | if (t1.read_ms() > 20) |
FlorianMaier | 0:efbd818aa4fe | 140 | { |
FlorianMaier | 0:efbd818aa4fe | 141 | t1.reset(); |
FlorianMaier | 0:efbd818aa4fe | 142 | if (lb == 0) |
FlorianMaier | 0:efbd818aa4fe | 143 | lb = 4; // Mit Bit0 blinken |
FlorianMaier | 0:efbd818aa4fe | 144 | else |
FlorianMaier | 0:efbd818aa4fe | 145 | lb = 0; |
FlorianMaier | 0:efbd818aa4fe | 146 | } |
FlorianMaier | 0:efbd818aa4fe | 147 | } |