Ampel
Dependencies: mbed
Fork of 2016-01-25_LABOR_Ampel by
Ampel.cpp
- Committer:
- tauchi88
- Date:
- 2016-01-25
- Revision:
- 0:b13d29153354
File content as of revision 0:b13d29153354:
#include "mbed.h" #include "BtnEventM0.h" //Ledbar BusOut lb1(P1_7, P1_6, P1_4, P1_3, P1_1, P1_0, LED4, LED3, LED2, LED1); // Statusled zeigt uns in welchem Zustand ide Statmachine gerade ist BusOut stLED(P1_13, P1_12); //erledigt für uns die Abfrage der positiven Flange BtnEventM0 sw4(P1_16), sw3(P0_23); //sw4 vorwärts sw3 rückwärts Serial pc(USBTX, USBRX); const int St_Rot = 1; const int St_Gelb = 1; const int St_Gruen = 1; class Ampel { public: void Init() { state=St_Rot; t1.start(); t2.start(); t3.start(); } void Rot(); void Gelb(); void Gruen(); public: void RotAction(); void GelbAction(); void GruenAction(); public: int state; Timer t1; //blinken Timer t2; //mit 10 Hz zur anzeige schicken Timer t3; //Zeit bis zum umschalten anzeigen }; Ampel amp; int main(void) { amp.Init(); sw3.Init(); sw4.Init(); pc.baud(125000); while(1) { } } //----------------------------------------------------------------------------------------------------- void Ampel::Rot() { //einmalige aktion pc.printf("ROT\n"); t3.reset(); while(1) { //Btn und Zeit abfragen (möglicher Zustandwechsel) if(t3.read_ms()>3000) { state=St_Gelb; return; } RotAction(); } } void Ampel::RotAction() { //Blinken if(t1.read_ms()>500) { t1.reset(); if(lb1==0) lb1=1; //bei Gelb soll dann lb=4 else lb1 =0; } //RestZeit mit 10 Hz zur Anzeige senden if(t2.read_ms()>100) { t2.reset(); pc.printf("2 %d\n", t3.read_ms()/100); //Zeitanzeige auf 1/10sec genau } }