
Nimmts
Dependencies: mbed
main.cpp
- Committer:
- anti2810
- Date:
- 2015-03-02
- Revision:
- 0:277902f3d425
File content as of revision 0:277902f3d425:
#include "mbed.h" #include "BtnEventM0.h" BusOut lb(LED3,LED2,LED1); //Kleine Ledbar (In Verwendung) PwmOut g(p5), b(p34), r(p36); BusOut lbrest(P1_13,P1_12,P1_7,P1_6,P1_4,P1_3,P1_1,P1_0,LED4); //Rest der ausgeschalten wird (Standardmäßig auf 1) BtnEventM0 Btn1(P0_15); //Button zum Reseten class Ampel //Ampelklasse { public: void Init() { state=1; t1.start(); t2.start(); t3.start(); } void Rot(); //Funktion Rot void Gelb(); //Funktion Gelb void Gruen(); //Funktion Grün public: void RotAction(); //Action Rot void GelbAction(); //Action Gelb void GruenAction(); //Action Gruen public: int state; //Statusvariabel Timer t1, t2, t3; //Timer t1, t2 und t3 }; Ampel amp; //Ampelklasse als Variabel aktivieren int main() //Hauptfunktion { lb=0; //Ledbar auf 0 setzen g=255; b=255; r=255; lbrest=0; //Ledbar auf 0 setzen Btn1.Init(); //Button mit Funktion Init ansprechen amp.Init(); //Ampelvariabel mit Funktion Init ansprechen while(1) { //Solange die Funktion aufgerufen wird if( amp.state==1 ) //Funktion auf state abstimmen amp.Rot(); if( amp.state==2 ) amp.Gelb(); if( amp.state==3 ) amp.Gruen(); if( amp.state==4 ) amp.Gelb(); } } void Ampel::Rot() //Funktion der Klasse Ampel { t1.reset(); //Reseten t2.reset(); //Reseten t3.reset(); //Reseten while(1) { RotAction(); //RotAction aufrufen if( Btn1.CheckFlag() ) { //Bei einem Buttonclick state=1; //state = 1 return; } } } void Ampel::Gelb() //Funktion der Klasse Ampel { t1.reset(); //Reseten t2.reset(); //Reseten t3.reset(); //Reseten while(1) { GelbAction(); //GelbAction aufrufen if( Btn1.CheckFlag() ) { //Bei einem Buttonclick state=1; //state = 1 Rot(); return; } } } void Ampel::Gruen() //Funktion der Klasse Ampel { t1.reset(); //Reseten t2.reset(); //Reseten t3.reset(); //Reseten while(1) { GruenAction(); //GruenAction aufrufen if( Btn1.CheckFlag() ) { //Bei einem Buttonclick state=1; //state = 1 Rot(); return; } } } void Ampel::RotAction() //Funktion der Klasse Ampel { if( t1.read_ms()<3000 ) { //Solange der Timer unter 3 Sekunden ist lb=1; g=255; b=255; r=0; //Ledbar auf 1 return; //Funktionsabbruch } state=2; //state = 2 Gelb(); //Funktion Gelb aufrufen } void Ampel::GelbAction() //Funktion der Klasse Ampel { if( t2.read_ms()<1000 ) { //Solange der Timer unter 1 Sekunden ist lb=2; g=0; b=255; r=0; //Ledbar auf 2 return; //Funktionsabbruch } if(state==2) { state=3; //state = 3 Gruen(); //Funktion Gruen aufrufen } else { state=1; //state = 1 Rot(); //Funktion Rot aufrufen } } void Ampel::GruenAction() //Funktion der Klasse Ampel { if( t3.read_ms()<3000 ) { //Solange der Timer unter 3 Sekunden ist lb=4; g=0; b=255; r=255; //Ledbar auf 4 return; //Funktionsabbruch } state=4; //state = 4 Gelb(); //Funktion Gelb aufrufen }