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.
Dependencies: mbed
main.cpp@1:4d500c8ba221, 2015-02-23 (annotated)
- Committer:
- anti2810
- Date:
- Mon Feb 23 14:38:06 2015 +0000
- Revision:
- 1:4d500c8ba221
- Parent:
- 0:63709874455b
12 pro Verwendung
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| anti2810 | 1:4d500c8ba221 | 1 | /* |
| anti2810 | 1:4d500c8ba221 | 2 | Copyright: Antonio Vlasic |
| anti2810 | 1:4d500c8ba221 | 3 | 1997 - heute |
| anti2810 | 1:4d500c8ba221 | 4 | */ |
| anti2810 | 1:4d500c8ba221 | 5 | |
| anti2810 | 0:63709874455b | 6 | #include "mbed.h" |
| anti2810 | 0:63709874455b | 7 | #include "BtnEventM0.h" |
| anti2810 | 0:63709874455b | 8 | |
| anti2810 | 1:4d500c8ba221 | 9 | BusOut lb(P1_7,P1_6,P1_4,P1_3,P1_1,P1_0,LED4,LED3,LED2,LED1); //Ledbar definieren ohne P1_13 und P1_12 |
| anti2810 | 1:4d500c8ba221 | 10 | BusOut stLED(P1_13,P1_12); //P1_13 und P1_12 definieren |
| anti2810 | 0:63709874455b | 11 | |
| anti2810 | 1:4d500c8ba221 | 12 | BtnEventM0 Btn1(P0_15), Btn2(P0_23); //2 Buttons unter einer Custom Library definieren |
| anti2810 | 1:4d500c8ba221 | 13 | |
| anti2810 | 1:4d500c8ba221 | 14 | //Custom Library: BtnEventM0.h |
| anti2810 | 0:63709874455b | 15 | |
| anti2810 | 0:63709874455b | 16 | class FahrradLeuchte { //Eine Klasse namens FahrradLeuchte |
| anti2810 | 0:63709874455b | 17 | public: //Öffentlich |
| anti2810 | 0:63709874455b | 18 | void Init() { state=1; t1.start(); } //Beim Aufrufen wird der Status auf 1 gesetzt und der Timer t1 gestartet |
| anti2810 | 0:63709874455b | 19 | void State1Func(); //Funktion definieren |
| anti2810 | 0:63709874455b | 20 | void State2Func(); //Funktion definieren |
| anti2810 | 0:63709874455b | 21 | void State3Func(); //Funktion definieren |
| anti2810 | 0:63709874455b | 22 | public: //Öffentlich |
| anti2810 | 0:63709874455b | 23 | void State1Action(); //Funktion definieren |
| anti2810 | 0:63709874455b | 24 | void State2Action(); //Funktion definieren |
| anti2810 | 0:63709874455b | 25 | void State3Action(); //Funktion definieren |
| anti2810 | 0:63709874455b | 26 | public: //Öffentlich |
| anti2810 | 0:63709874455b | 27 | int state; //Integer state definieren |
| anti2810 | 0:63709874455b | 28 | Timer t1; //Timer t1 definieren |
| anti2810 | 0:63709874455b | 29 | }; |
| anti2810 | 0:63709874455b | 30 | |
| anti2810 | 0:63709874455b | 31 | FahrradLeuchte fl; //Klasse als Variabel aktivieren |
| anti2810 | 0:63709874455b | 32 | |
| anti2810 | 0:63709874455b | 33 | int main() { //Main-Funktion |
| anti2810 | 0:63709874455b | 34 | lb=0; //Gesamte Ledbar auf 0 setzen |
| anti2810 | 1:4d500c8ba221 | 35 | Btn1.Init(); Btn2.Init(); //Btn1 und Btn2 mit Init() ansprechen |
| anti2810 | 1:4d500c8ba221 | 36 | fl.Init(); //Die Fahrradleuchte mit Init() ansprechen |
| anti2810 | 1:4d500c8ba221 | 37 | while(1) //Die ganze Zeit durchlaufen |
| anti2810 | 0:63709874455b | 38 | { |
| anti2810 | 1:4d500c8ba221 | 39 | if( fl.state==1 ) //Wenn der Status der Fahrradleuchte 1 ist |
| anti2810 | 1:4d500c8ba221 | 40 | fl.State1Func(); //Funktion State1Func unter der Klasse FahrradLeuchte starten |
| anti2810 | 1:4d500c8ba221 | 41 | if( fl.state==2 ) //Wenn der Status der Fahrradleuchte 2 ist |
| anti2810 | 1:4d500c8ba221 | 42 | fl.State2Func(); //Funktion State2Func unter der Klasse FahrradLeuchte starten |
| anti2810 | 1:4d500c8ba221 | 43 | if( fl.state==3 ) //Wenn der Status der Fahrradleuchte 3 ist |
| anti2810 | 1:4d500c8ba221 | 44 | fl.State3Func(); //Funktion State3Func unter der Klasse FahrradLeuchte starten |
| anti2810 | 0:63709874455b | 45 | } |
| anti2810 | 0:63709874455b | 46 | } |
| anti2810 | 0:63709874455b | 47 | |
| anti2810 | 1:4d500c8ba221 | 48 | void FahrradLeuchte::State1Func() //Funktion State1Func() der Klasse FahrradLeuchte definieren |
| anti2810 | 1:4d500c8ba221 | 49 | { |
| anti2810 | 1:4d500c8ba221 | 50 | t1.reset(); //Timer t1 reseten |
| anti2810 | 1:4d500c8ba221 | 51 | stLED = 1; //Binärstatus 1 mit Leds anzeigen |
| anti2810 | 1:4d500c8ba221 | 52 | while(1) //Während die Funktion aufgerufen wird |
| anti2810 | 1:4d500c8ba221 | 53 | { |
| anti2810 | 1:4d500c8ba221 | 54 | State1Action(); //Function State1Action() aufrufen |
| anti2810 | 1:4d500c8ba221 | 55 | if( Btn1.CheckFlag() ) //Wenn der erste Button geklickt wird |
| anti2810 | 1:4d500c8ba221 | 56 | { state=2; return; } //state = 2 |
| anti2810 | 1:4d500c8ba221 | 57 | if( Btn2.CheckFlag() ) //Wenn der zweite Button geklickt wird |
| anti2810 | 1:4d500c8ba221 | 58 | { state=3; return; } //state = 3 |
| anti2810 | 1:4d500c8ba221 | 59 | } |
| anti2810 | 1:4d500c8ba221 | 60 | } |
| anti2810 | 1:4d500c8ba221 | 61 | |
| anti2810 | 1:4d500c8ba221 | 62 | void FahrradLeuchte::State2Func() //Funktion State2Func() der Klasse FahrradLeuchte definieren (Rest siehe oben) |
| anti2810 | 0:63709874455b | 63 | { |
| anti2810 | 0:63709874455b | 64 | t1.reset(); |
| anti2810 | 0:63709874455b | 65 | stLED = 2; |
| anti2810 | 0:63709874455b | 66 | while(1) |
| anti2810 | 0:63709874455b | 67 | { |
| anti2810 | 0:63709874455b | 68 | State2Action(); |
| anti2810 | 0:63709874455b | 69 | if( Btn1.CheckFlag() ) |
| anti2810 | 0:63709874455b | 70 | { state=3; return; } |
| anti2810 | 0:63709874455b | 71 | if( Btn2.CheckFlag() ) |
| anti2810 | 0:63709874455b | 72 | { state=1; return; } |
| anti2810 | 0:63709874455b | 73 | } |
| anti2810 | 0:63709874455b | 74 | } |
| anti2810 | 0:63709874455b | 75 | |
| anti2810 | 1:4d500c8ba221 | 76 | void FahrradLeuchte::State3Func() //Funktion State3Func() der Klasse FahrradLeuchte definieren (Rest siehe oben) |
| anti2810 | 0:63709874455b | 77 | { |
| anti2810 | 0:63709874455b | 78 | t1.reset(); |
| anti2810 | 0:63709874455b | 79 | stLED = 3; |
| anti2810 | 0:63709874455b | 80 | while(1) |
| anti2810 | 0:63709874455b | 81 | { |
| anti2810 | 0:63709874455b | 82 | State3Action(); |
| anti2810 | 0:63709874455b | 83 | if( Btn1.CheckFlag() ) |
| anti2810 | 0:63709874455b | 84 | { state=1; return; } |
| anti2810 | 0:63709874455b | 85 | if( Btn2.CheckFlag() ) |
| anti2810 | 0:63709874455b | 86 | { state=2; return; } |
| anti2810 | 0:63709874455b | 87 | } |
| anti2810 | 0:63709874455b | 88 | } |
| anti2810 | 0:63709874455b | 89 | |
| anti2810 | 1:4d500c8ba221 | 90 | void FahrradLeuchte::State1Action() //Funktion State1Action() der Klasse FahrradLeuchte definieren |
| anti2810 | 0:63709874455b | 91 | { |
| anti2810 | 1:4d500c8ba221 | 92 | if( t1.read_ms()<500 ) //Solande t1 kleiner als 0.5 Sekunden ist |
| anti2810 | 1:4d500c8ba221 | 93 | return; //Ende der Funktion |
| anti2810 | 1:4d500c8ba221 | 94 | t1.reset(); //Wenn größer: Timer t1 reseten |
| anti2810 | 1:4d500c8ba221 | 95 | if( lb==0 ) //wenn die Ledbar auf dem Status 0 ist |
| anti2810 | 1:4d500c8ba221 | 96 | lb = 512; //Der 3. Led von hinten der Ledbar aufleuchten lassen |
| anti2810 | 1:4d500c8ba221 | 97 | else //Sonst |
| anti2810 | 1:4d500c8ba221 | 98 | lb = 0; //Ledbar auf 0 setzen |
| anti2810 | 0:63709874455b | 99 | } |
| anti2810 | 0:63709874455b | 100 | |
| anti2810 | 1:4d500c8ba221 | 101 | void FahrradLeuchte::State2Action() //Funktion State1Action() der Klasse FahrradLeuchte definieren (Rest siehe oben) |
| anti2810 | 0:63709874455b | 102 | { |
| anti2810 | 0:63709874455b | 103 | if( t1.read_ms()<200 ) |
| anti2810 | 0:63709874455b | 104 | return; |
| anti2810 | 0:63709874455b | 105 | t1.reset(); |
| anti2810 | 0:63709874455b | 106 | if( lb==0 ) |
| anti2810 | 0:63709874455b | 107 | lb = 256; |
| anti2810 | 0:63709874455b | 108 | else |
| anti2810 | 0:63709874455b | 109 | lb = 0; |
| anti2810 | 0:63709874455b | 110 | } |
| anti2810 | 0:63709874455b | 111 | |
| anti2810 | 1:4d500c8ba221 | 112 | void FahrradLeuchte::State3Action() //Funktion State1Action() der Klasse FahrradLeuchte definieren (Rest siehe oben) |
| anti2810 | 0:63709874455b | 113 | { |
| anti2810 | 0:63709874455b | 114 | if( t1.read_ms()<100 ) |
| anti2810 | 0:63709874455b | 115 | return; |
| anti2810 | 0:63709874455b | 116 | t1.reset(); |
| anti2810 | 0:63709874455b | 117 | if( lb==0 ) |
| anti2810 | 0:63709874455b | 118 | lb = 128; |
| anti2810 | 0:63709874455b | 119 | else |
| anti2810 | 0:63709874455b | 120 | lb = 0; |
| anti2810 | 0:63709874455b | 121 | } |