Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@11:a07dfec403e5, 2018-11-15 (annotated)
- 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?
User | Revision | Line number | New 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 | } |