Martin Werluschnig / Mbed 2 deprecated Fahrradleuchte_Class

Dependencies:   mbed

Committer:
martwerl
Date:
Thu Nov 15 17:59:38 2018 +0000
Revision:
11:a07dfec403e5
Parent:
10:6495a89d66ed
Fahrradleuchte_Class

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hollegha2 0:35d70ff5c12e 1 #include "mbed.h"
martwerl 11:a07dfec403e5 2 #include "Fahrradleuchte.h"
hollegha2 10:6495a89d66ed 3
hollegha2 0:35d70ff5c12e 4 // LSB MSB
hollegha2 0:35d70ff5c12e 5 BusOut lb(P1_13,P1_12,P1_7,P1_6,P1_4,P1_3,P1_1,P1_0,LED4,LED3,LED2,LED1);
hollegha2 0:35d70ff5c12e 6
martwerl 11:a07dfec403e5 7 //StatusLED zeigt uns in welchem Zustand die Statemachine gerade ist
martwerl 11:a07dfec403e5 8 BusOut stLED(P1_13,P1_12);
martwerl 11:a07dfec403e5 9
martwerl 11:a07dfec403e5 10 //BtnEventM0 erledigt di eAbfrage der positiven Flanke
hollegha2 0:35d70ff5c12e 11 BtnEventM0 sw4(P1_16), sw2(P0_15), sw1(P0_10), sw3(P0_23);
martwerl 11:a07dfec403e5 12 //sw4 = foreward, sw3 = backward
hollegha2 0:35d70ff5c12e 13
martwerl 11:a07dfec403e5 14 class Fahrradleuchte
martwerl 11:a07dfec403e5 15 {
martwerl 11:a07dfec403e5 16 public:
martwerl 11:a07dfec403e5 17 void Init();
martwerl 11:a07dfec403e5 18 void State1Func();//Funktionen, die auch von außerhalb der Klasse aufgerufen werden können
martwerl 11:a07dfec403e5 19 void State2Func();
martwerl 11:a07dfec403e5 20 void State3Func();
martwerl 11:a07dfec403e5 21 void State1Action();//Aktionen, die auch von außen aufgerufen werden können Bit2 (LED) mit 10 Hz blinken
martwerl 11:a07dfec403e5 22 void State2Action();//Bit2(LED) mit 5 Hz blinken
martwerl 11:a07dfec403e5 23 void State3Action();//Bit6(LED) mit 2 Hz blinken
martwerl 11:a07dfec403e5 24 public:
martwerl 11:a07dfec403e5 25 int state;//zeigt an, in welchem Zustand sich die Leuchte befindet.
martwerl 11:a07dfec403e5 26 private://Kann nur in dieser Klasse aufgerufen werden
martwerl 11:a07dfec403e5 27 Timer t1;
martwerl 11:a07dfec403e5 28 };//HIER: Klasse mit Strichpunkt beenden
martwerl 11:a07dfec403e5 29
martwerl 11:a07dfec403e5 30 Fahrradleuchte fl;//Objekt fl anlegen
martwerl 11:a07dfec403e5 31 //Fahrradleuchte fl2; zB...
hollegha2 0:35d70ff5c12e 32
hollegha2 0:35d70ff5c12e 33 int main(void)
hollegha2 0:35d70ff5c12e 34 {
martwerl 11:a07dfec403e5 35 sw3.Init();//P0_23 backward
martwerl 11:a07dfec403e5 36 sw4.Init();//P1_16 foreward
martwerl 11:a07dfec403e5 37 fl.Init();//Objekt von Fahrradleuchte
martwerl 11:a07dfec403e5 38 //fl2.Init(); zB...
martwerl 11:a07dfec403e5 39 while(1)
martwerl 11:a07dfec403e5 40 {
martwerl 11:a07dfec403e5 41 if(fl.state==1)
martwerl 11:a07dfec403e5 42 fl.State1Func();
martwerl 11:a07dfec403e5 43 if(fl.state==2)
martwerl 11:a07dfec403e5 44 fl.State2Func();
martwerl 11:a07dfec403e5 45 if(fl.state==3)
martwerl 11:a07dfec403e5 46 fl.State3Func();
martwerl 11:a07dfec403e5 47
martwerl 11:a07dfec403e5 48 }
martwerl 11:a07dfec403e5 49 }
martwerl 11:a07dfec403e5 50
martwerl 11:a07dfec403e5 51 void Fahrradleuchte::Init()
martwerl 11:a07dfec403e5 52 {
hollegha2 0:35d70ff5c12e 53 t1.start();
martwerl 11:a07dfec403e5 54 state=1;
martwerl 11:a07dfec403e5 55 //fl.state=1; zB...
martwerl 11:a07dfec403e5 56 //fl2.state =14; zB...
martwerl 11:a07dfec403e5 57 }
hollegha2 0:35d70ff5c12e 58
martwerl 11:a07dfec403e5 59 void Fahrradleuchte::State1Func()
martwerl 11:a07dfec403e5 60 {
martwerl 11:a07dfec403e5 61 //einmalige Aktion beim Eintritt in die Zustandsfunktion
martwerl 11:a07dfec403e5 62 stLED=1;//Anzeigen, dass wir im "state 1" sind
martwerl 11:a07dfec403e5 63 while(1)
martwerl 11:a07dfec403e5 64 {
martwerl 11:a07dfec403e5 65 State1Action();
martwerl 11:a07dfec403e5 66 //Buttons abfragen und möglicherweise Zustand ändern
martwerl 11:a07dfec403e5 67 if(sw4.CheckFlag())
martwerl 11:a07dfec403e5 68 {
martwerl 11:a07dfec403e5 69 state=2;
martwerl 11:a07dfec403e5 70 return;
martwerl 11:a07dfec403e5 71 }
martwerl 11:a07dfec403e5 72 if(sw3.CheckFlag())
martwerl 11:a07dfec403e5 73 {
martwerl 11:a07dfec403e5 74 state=3;
martwerl 11:a07dfec403e5 75 return;
martwerl 11:a07dfec403e5 76 }
martwerl 11:a07dfec403e5 77 }
martwerl 11:a07dfec403e5 78 }
martwerl 11:a07dfec403e5 79 void Fahrradleuchte::State2Func()
martwerl 11:a07dfec403e5 80 {
martwerl 11:a07dfec403e5 81 //einmalige Aktion beim Eintritt in die Zustandsfunktion
martwerl 11:a07dfec403e5 82 stLED=1;//Anzeigen, dass wir im "state 1" sind
martwerl 11:a07dfec403e5 83 while(1)
martwerl 11:a07dfec403e5 84 {
martwerl 11:a07dfec403e5 85 State1Action();
martwerl 11:a07dfec403e5 86 //Buttons abfragen und möglicherweise Zustand ändern
martwerl 11:a07dfec403e5 87 if(sw4.CheckFlag())
martwerl 11:a07dfec403e5 88 {
martwerl 11:a07dfec403e5 89 state=2;
martwerl 11:a07dfec403e5 90 return;
martwerl 11:a07dfec403e5 91 }
martwerl 11:a07dfec403e5 92 if(sw3.CheckFlag())
martwerl 11:a07dfec403e5 93 {
martwerl 11:a07dfec403e5 94 state=3;
martwerl 11:a07dfec403e5 95 return;
martwerl 11:a07dfec403e5 96 }
martwerl 11:a07dfec403e5 97 }
martwerl 11:a07dfec403e5 98 }
martwerl 11:a07dfec403e5 99 void Fahrradleuchte::State3Func()
martwerl 11:a07dfec403e5 100 {
martwerl 11:a07dfec403e5 101 //einmalige Aktion beim Eintritt in die Zustandsfunktion
martwerl 11:a07dfec403e5 102 stLED=1;//Anzeigen, dass wir im "state 1" sind
martwerl 11:a07dfec403e5 103 while(1)
martwerl 11:a07dfec403e5 104 {
martwerl 11:a07dfec403e5 105 State1Action();
martwerl 11:a07dfec403e5 106 //Buttons abfragen und möglicherweise Zustand ändern
martwerl 11:a07dfec403e5 107 if(sw4.CheckFlag())
martwerl 11:a07dfec403e5 108 {
martwerl 11:a07dfec403e5 109 state=2;
martwerl 11:a07dfec403e5 110 return;
martwerl 11:a07dfec403e5 111 }
martwerl 11:a07dfec403e5 112 if(sw3.CheckFlag())
martwerl 11:a07dfec403e5 113 {
martwerl 11:a07dfec403e5 114 state=3;
martwerl 11:a07dfec403e5 115 return;
martwerl 11:a07dfec403e5 116 }
hollegha2 0:35d70ff5c12e 117 }
hollegha2 0:35d70ff5c12e 118 }
hollegha2 0:35d70ff5c12e 119
martwerl 11:a07dfec403e5 120 void Fahrradleuchte::State1Action()
hollegha2 0:35d70ff5c12e 121 {
martwerl 11:a07dfec403e5 122 if(t1.read_ms()>100) //10Hz
martwerl 11:a07dfec403e5 123 {
martwerl 11:a07dfec403e5 124 t1.reset();
martwerl 11:a07dfec403e5 125 if(lb==0)
martwerl 11:a07dfec403e5 126 lb=4;
martwerl 11:a07dfec403e5 127 else
martwerl 11:a07dfec403e5 128 lb=0;
hollegha2 0:35d70ff5c12e 129 }
martwerl 11:a07dfec403e5 130 }