Alexander Leber
/
m0_Test
lalalala
main.cpp
- Committer:
- DoTTi
- Date:
- 2017-12-07
- Revision:
- 0:1285025ec711
File content as of revision 0:1285025ec711:
#include "mbed.h" #include "BtnEventM0.h" // LSB MSB // 2^0 2^1 2^2 2^11 BusOut lb(P1_7,P1_6,P1_4,P1_3,P1_1,P1_0,LED4,LED3,LED2,LED1); // D20 D19 D18 D17 D16 D15 D14 D13 D4 D3 D2 D1 // Zustandsangebe BusOut stLED(P1_13,P1_12); // Sw3 Sw4 BtnEventM0 sw3(P0_23), sw4(P1_16); //sw4 ist Fußgängerknopf Serial pc (USBTX, USBRX); class Ampel { public: void Init(); void rot_func(); void gelb_func(); void gruen_func(); void gruen_blink_func(); private: void rot_act(); void gelb_act(); void gruen_act(); void gruen_blink_act(); public: Timer t1, t2, t3; int state; }; const int st_rot = 1; const int st_gelb = 2; const int st_gruen = 3; const int st_gruen_blink = 4; Ampel amp; main() { while(1) { if(amp.state == 1) amp.rot_func(); if(amp.state == 2) amp.gelb_func(); if(amp.state == 3) amp.gruen_func(); if(amp.state == 4) amp.gruen_blink_func(); } } void Ampel::Init() { t1.start(); t2.start(); t3.start(); state = st_rot; } void Ampel::rot_func() { stLED = 1; while(1) { rot_act(); if(t1.read_ms()>3000) { t1.reset(); state = st_gelb; return; } } } void Ampel::gelb_func() { stLED = 2; while(1) { gelb_act(); if(t1.read_ms()>4000) { t1.reset(); state = st_gruen; return; } if(sw4.CheckFlag()) { state = st_gruen_blink; return; } } } void Ampel::gruen_func() { stLED = 3; while(1) { gruen_act(); if(t1.read_ms()>5000) { t1.reset(); state = st_rot; return; } if(sw4.CheckFlag()) { state = st_gruen_blink; return; } } } void Ampel::gruen_blink_func() { stLED = 4; while(1) { gruen_blink_act(); if(t1.read_ms()>2000) { t1.reset(); state = st_rot; return; } } } void Ampel::rot_act() { if(t2.read_ms()>100) { if(lb = 0) lb = 2; else lb = 0; } } void Ampel::gelb_act() { if(t2.read_ms()>200) { if(lb = 0) lb = 4; else lb = 0; } } void Ampel::gruen_act() { if(t2.read_ms()>500) { if(lb = 0) lb = 8; else lb = 0; } } void Ampel::gruen_blink_act() { if(t2.read_ms()>700) { if(lb = 0) lb = 16; else lb = 0; } }