Alexander Leber
/
m0_Test
lalalala
main.cpp@0:1285025ec711, 2017-12-07 (annotated)
- Committer:
- DoTTi
- Date:
- Thu Dec 07 10:01:15 2017 +0000
- Revision:
- 0:1285025ec711
llalal;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DoTTi | 0:1285025ec711 | 1 | #include "mbed.h" |
DoTTi | 0:1285025ec711 | 2 | #include "BtnEventM0.h" |
DoTTi | 0:1285025ec711 | 3 | |
DoTTi | 0:1285025ec711 | 4 | // LSB MSB |
DoTTi | 0:1285025ec711 | 5 | // 2^0 2^1 2^2 2^11 |
DoTTi | 0:1285025ec711 | 6 | BusOut lb(P1_7,P1_6,P1_4,P1_3,P1_1,P1_0,LED4,LED3,LED2,LED1); |
DoTTi | 0:1285025ec711 | 7 | // D20 D19 D18 D17 D16 D15 D14 D13 D4 D3 D2 D1 |
DoTTi | 0:1285025ec711 | 8 | |
DoTTi | 0:1285025ec711 | 9 | // Zustandsangebe |
DoTTi | 0:1285025ec711 | 10 | BusOut stLED(P1_13,P1_12); |
DoTTi | 0:1285025ec711 | 11 | |
DoTTi | 0:1285025ec711 | 12 | // Sw3 Sw4 |
DoTTi | 0:1285025ec711 | 13 | BtnEventM0 sw3(P0_23), sw4(P1_16); //sw4 ist Fußgängerknopf |
DoTTi | 0:1285025ec711 | 14 | |
DoTTi | 0:1285025ec711 | 15 | Serial pc (USBTX, USBRX); |
DoTTi | 0:1285025ec711 | 16 | |
DoTTi | 0:1285025ec711 | 17 | class Ampel { |
DoTTi | 0:1285025ec711 | 18 | public: |
DoTTi | 0:1285025ec711 | 19 | void Init(); |
DoTTi | 0:1285025ec711 | 20 | void rot_func(); |
DoTTi | 0:1285025ec711 | 21 | void gelb_func(); |
DoTTi | 0:1285025ec711 | 22 | void gruen_func(); |
DoTTi | 0:1285025ec711 | 23 | void gruen_blink_func(); |
DoTTi | 0:1285025ec711 | 24 | private: |
DoTTi | 0:1285025ec711 | 25 | void rot_act(); |
DoTTi | 0:1285025ec711 | 26 | void gelb_act(); |
DoTTi | 0:1285025ec711 | 27 | void gruen_act(); |
DoTTi | 0:1285025ec711 | 28 | void gruen_blink_act(); |
DoTTi | 0:1285025ec711 | 29 | public: |
DoTTi | 0:1285025ec711 | 30 | Timer t1, t2, t3; |
DoTTi | 0:1285025ec711 | 31 | int state; |
DoTTi | 0:1285025ec711 | 32 | }; |
DoTTi | 0:1285025ec711 | 33 | |
DoTTi | 0:1285025ec711 | 34 | const int st_rot = 1; |
DoTTi | 0:1285025ec711 | 35 | const int st_gelb = 2; |
DoTTi | 0:1285025ec711 | 36 | const int st_gruen = 3; |
DoTTi | 0:1285025ec711 | 37 | const int st_gruen_blink = 4; |
DoTTi | 0:1285025ec711 | 38 | |
DoTTi | 0:1285025ec711 | 39 | Ampel amp; |
DoTTi | 0:1285025ec711 | 40 | |
DoTTi | 0:1285025ec711 | 41 | main() { |
DoTTi | 0:1285025ec711 | 42 | while(1) { |
DoTTi | 0:1285025ec711 | 43 | if(amp.state == 1) |
DoTTi | 0:1285025ec711 | 44 | amp.rot_func(); |
DoTTi | 0:1285025ec711 | 45 | if(amp.state == 2) |
DoTTi | 0:1285025ec711 | 46 | amp.gelb_func(); |
DoTTi | 0:1285025ec711 | 47 | if(amp.state == 3) |
DoTTi | 0:1285025ec711 | 48 | amp.gruen_func(); |
DoTTi | 0:1285025ec711 | 49 | if(amp.state == 4) |
DoTTi | 0:1285025ec711 | 50 | amp.gruen_blink_func(); |
DoTTi | 0:1285025ec711 | 51 | } |
DoTTi | 0:1285025ec711 | 52 | } |
DoTTi | 0:1285025ec711 | 53 | |
DoTTi | 0:1285025ec711 | 54 | void Ampel::Init() { |
DoTTi | 0:1285025ec711 | 55 | t1.start(); |
DoTTi | 0:1285025ec711 | 56 | t2.start(); |
DoTTi | 0:1285025ec711 | 57 | t3.start(); |
DoTTi | 0:1285025ec711 | 58 | |
DoTTi | 0:1285025ec711 | 59 | state = st_rot; |
DoTTi | 0:1285025ec711 | 60 | } |
DoTTi | 0:1285025ec711 | 61 | |
DoTTi | 0:1285025ec711 | 62 | void Ampel::rot_func() { |
DoTTi | 0:1285025ec711 | 63 | stLED = 1; |
DoTTi | 0:1285025ec711 | 64 | |
DoTTi | 0:1285025ec711 | 65 | while(1) { |
DoTTi | 0:1285025ec711 | 66 | rot_act(); |
DoTTi | 0:1285025ec711 | 67 | |
DoTTi | 0:1285025ec711 | 68 | if(t1.read_ms()>3000) { |
DoTTi | 0:1285025ec711 | 69 | t1.reset(); |
DoTTi | 0:1285025ec711 | 70 | state = st_gelb; |
DoTTi | 0:1285025ec711 | 71 | return; |
DoTTi | 0:1285025ec711 | 72 | } |
DoTTi | 0:1285025ec711 | 73 | } |
DoTTi | 0:1285025ec711 | 74 | } |
DoTTi | 0:1285025ec711 | 75 | |
DoTTi | 0:1285025ec711 | 76 | void Ampel::gelb_func() { |
DoTTi | 0:1285025ec711 | 77 | stLED = 2; |
DoTTi | 0:1285025ec711 | 78 | |
DoTTi | 0:1285025ec711 | 79 | while(1) { |
DoTTi | 0:1285025ec711 | 80 | gelb_act(); |
DoTTi | 0:1285025ec711 | 81 | |
DoTTi | 0:1285025ec711 | 82 | if(t1.read_ms()>4000) { |
DoTTi | 0:1285025ec711 | 83 | t1.reset(); |
DoTTi | 0:1285025ec711 | 84 | state = st_gruen; |
DoTTi | 0:1285025ec711 | 85 | return; |
DoTTi | 0:1285025ec711 | 86 | } |
DoTTi | 0:1285025ec711 | 87 | if(sw4.CheckFlag()) { |
DoTTi | 0:1285025ec711 | 88 | state = st_gruen_blink; |
DoTTi | 0:1285025ec711 | 89 | return; |
DoTTi | 0:1285025ec711 | 90 | } |
DoTTi | 0:1285025ec711 | 91 | } |
DoTTi | 0:1285025ec711 | 92 | } |
DoTTi | 0:1285025ec711 | 93 | |
DoTTi | 0:1285025ec711 | 94 | void Ampel::gruen_func() { |
DoTTi | 0:1285025ec711 | 95 | stLED = 3; |
DoTTi | 0:1285025ec711 | 96 | |
DoTTi | 0:1285025ec711 | 97 | while(1) { |
DoTTi | 0:1285025ec711 | 98 | gruen_act(); |
DoTTi | 0:1285025ec711 | 99 | |
DoTTi | 0:1285025ec711 | 100 | if(t1.read_ms()>5000) { |
DoTTi | 0:1285025ec711 | 101 | t1.reset(); |
DoTTi | 0:1285025ec711 | 102 | state = st_rot; |
DoTTi | 0:1285025ec711 | 103 | return; |
DoTTi | 0:1285025ec711 | 104 | } |
DoTTi | 0:1285025ec711 | 105 | if(sw4.CheckFlag()) { |
DoTTi | 0:1285025ec711 | 106 | state = st_gruen_blink; |
DoTTi | 0:1285025ec711 | 107 | return; |
DoTTi | 0:1285025ec711 | 108 | } |
DoTTi | 0:1285025ec711 | 109 | } |
DoTTi | 0:1285025ec711 | 110 | } |
DoTTi | 0:1285025ec711 | 111 | |
DoTTi | 0:1285025ec711 | 112 | void Ampel::gruen_blink_func() { |
DoTTi | 0:1285025ec711 | 113 | stLED = 4; |
DoTTi | 0:1285025ec711 | 114 | |
DoTTi | 0:1285025ec711 | 115 | while(1) { |
DoTTi | 0:1285025ec711 | 116 | gruen_blink_act(); |
DoTTi | 0:1285025ec711 | 117 | |
DoTTi | 0:1285025ec711 | 118 | if(t1.read_ms()>2000) { |
DoTTi | 0:1285025ec711 | 119 | t1.reset(); |
DoTTi | 0:1285025ec711 | 120 | state = st_rot; |
DoTTi | 0:1285025ec711 | 121 | return; |
DoTTi | 0:1285025ec711 | 122 | } |
DoTTi | 0:1285025ec711 | 123 | } |
DoTTi | 0:1285025ec711 | 124 | } |
DoTTi | 0:1285025ec711 | 125 | |
DoTTi | 0:1285025ec711 | 126 | void Ampel::rot_act() { |
DoTTi | 0:1285025ec711 | 127 | if(t2.read_ms()>100) { |
DoTTi | 0:1285025ec711 | 128 | if(lb = 0) |
DoTTi | 0:1285025ec711 | 129 | lb = 2; |
DoTTi | 0:1285025ec711 | 130 | else |
DoTTi | 0:1285025ec711 | 131 | lb = 0; |
DoTTi | 0:1285025ec711 | 132 | } |
DoTTi | 0:1285025ec711 | 133 | } |
DoTTi | 0:1285025ec711 | 134 | |
DoTTi | 0:1285025ec711 | 135 | void Ampel::gelb_act() { |
DoTTi | 0:1285025ec711 | 136 | if(t2.read_ms()>200) { |
DoTTi | 0:1285025ec711 | 137 | if(lb = 0) |
DoTTi | 0:1285025ec711 | 138 | lb = 4; |
DoTTi | 0:1285025ec711 | 139 | else |
DoTTi | 0:1285025ec711 | 140 | lb = 0; |
DoTTi | 0:1285025ec711 | 141 | } |
DoTTi | 0:1285025ec711 | 142 | } |
DoTTi | 0:1285025ec711 | 143 | |
DoTTi | 0:1285025ec711 | 144 | void Ampel::gruen_act() { |
DoTTi | 0:1285025ec711 | 145 | if(t2.read_ms()>500) { |
DoTTi | 0:1285025ec711 | 146 | if(lb = 0) |
DoTTi | 0:1285025ec711 | 147 | lb = 8; |
DoTTi | 0:1285025ec711 | 148 | else |
DoTTi | 0:1285025ec711 | 149 | lb = 0; |
DoTTi | 0:1285025ec711 | 150 | } |
DoTTi | 0:1285025ec711 | 151 | } |
DoTTi | 0:1285025ec711 | 152 | |
DoTTi | 0:1285025ec711 | 153 | void Ampel::gruen_blink_act() { |
DoTTi | 0:1285025ec711 | 154 | if(t2.read_ms()>700) { |
DoTTi | 0:1285025ec711 | 155 | if(lb = 0) |
DoTTi | 0:1285025ec711 | 156 | lb = 16; |
DoTTi | 0:1285025ec711 | 157 | else |
DoTTi | 0:1285025ec711 | 158 | lb = 0; |
DoTTi | 0:1285025ec711 | 159 | } |
DoTTi | 0:1285025ec711 | 160 | } |