§BHELI / Mbed 2 deprecated Fahrradleuchte

Dependencies:   mbed

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?

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