M0 Board

Dependencies:   mbed

Committer:
FlorianMaier
Date:
Thu Jan 18 12:08:08 2018 +0000
Revision:
0:efbd818aa4fe
Fahrradleuchte m0Board

Who changed what in which revision?

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