
ampel2
Dependencies: mbed
main.cpp@0:adf5179f29bb, 2015-03-16 (annotated)
- Committer:
- trivla
- Date:
- Mon Mar 16 15:27:20 2015 +0000
- Revision:
- 0:adf5179f29bb
ampel2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
trivla | 0:adf5179f29bb | 1 | |
trivla | 0:adf5179f29bb | 2 | #include "mbed.h" |
trivla | 0:adf5179f29bb | 3 | #include "BtnEventM0.h" |
trivla | 0:adf5179f29bb | 4 | |
trivla | 0:adf5179f29bb | 5 | 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 |
trivla | 0:adf5179f29bb | 6 | BusOut stLED(P1_13,P1_12); //P1_13 und P1_12 definieren |
trivla | 0:adf5179f29bb | 7 | |
trivla | 0:adf5179f29bb | 8 | Serial pc(USBTX, USBRX); //ein serielles Objekt anlegen |
trivla | 0:adf5179f29bb | 9 | BtnEventM0 Btn1(P0_15), Btn2(P0_23); //2 Buttons unter einer Custom Library definieren |
trivla | 0:adf5179f29bb | 10 | |
trivla | 0:adf5179f29bb | 11 | //Custom Library: BtnEventM0.h |
trivla | 0:adf5179f29bb | 12 | |
trivla | 0:adf5179f29bb | 13 | class Ampel |
trivla | 0:adf5179f29bb | 14 | { |
trivla | 0:adf5179f29bb | 15 | public: |
trivla | 0:adf5179f29bb | 16 | void Init() { |
trivla | 0:adf5179f29bb | 17 | state=1; |
trivla | 0:adf5179f29bb | 18 | t1.start(); |
trivla | 0:adf5179f29bb | 19 | t2.start(); |
trivla | 0:adf5179f29bb | 20 | t3.start(); |
trivla | 0:adf5179f29bb | 21 | } |
trivla | 0:adf5179f29bb | 22 | |
trivla | 0:adf5179f29bb | 23 | void rot(); |
trivla | 0:adf5179f29bb | 24 | void gelb(); |
trivla | 0:adf5179f29bb | 25 | void gruen(); |
trivla | 0:adf5179f29bb | 26 | void gruen_bl(); |
trivla | 0:adf5179f29bb | 27 | public: |
trivla | 0:adf5179f29bb | 28 | void rotAction(); |
trivla | 0:adf5179f29bb | 29 | void gelbAction(); |
trivla | 0:adf5179f29bb | 30 | void gruenAction(); |
trivla | 0:adf5179f29bb | 31 | void gruen_blAction(); |
trivla | 0:adf5179f29bb | 32 | public: |
trivla | 0:adf5179f29bb | 33 | //state sagt uns in welchem Zustand sich die Ampel gerade befindet |
trivla | 0:adf5179f29bb | 34 | int state; |
trivla | 0:adf5179f29bb | 35 | Timer t1; |
trivla | 0:adf5179f29bb | 36 | Timer t2; |
trivla | 0:adf5179f29bb | 37 | Timer t3; |
trivla | 0:adf5179f29bb | 38 | |
trivla | 0:adf5179f29bb | 39 | } ; |
trivla | 0:adf5179f29bb | 40 | |
trivla | 0:adf5179f29bb | 41 | |
trivla | 0:adf5179f29bb | 42 | Ampel amp; |
trivla | 0:adf5179f29bb | 43 | |
trivla | 0:adf5179f29bb | 44 | int main() //Main-Funktion |
trivla | 0:adf5179f29bb | 45 | { |
trivla | 0:adf5179f29bb | 46 | pc.baud(125000); // auf 125000 Bits/sec setzen |
trivla | 0:adf5179f29bb | 47 | Btn1.Init(); |
trivla | 0:adf5179f29bb | 48 | amp.Init(); //Btn1 und Btn2 mit Init() ansprechen |
trivla | 0:adf5179f29bb | 49 | while(1) { //Die ganze Zeit durchlaufen |
trivla | 0:adf5179f29bb | 50 | if( amp.state==1 ) |
trivla | 0:adf5179f29bb | 51 | amp.rot(); |
trivla | 0:adf5179f29bb | 52 | if( amp.state==2 ) |
trivla | 0:adf5179f29bb | 53 | amp.gelb(); |
trivla | 0:adf5179f29bb | 54 | if( amp.state==3 ) |
trivla | 0:adf5179f29bb | 55 | amp.gruen(); |
trivla | 0:adf5179f29bb | 56 | if( amp.state==4 ) |
trivla | 0:adf5179f29bb | 57 | amp.gruen_bl(); |
trivla | 0:adf5179f29bb | 58 | |
trivla | 0:adf5179f29bb | 59 | amp.state=1; |
trivla | 0:adf5179f29bb | 60 | } |
trivla | 0:adf5179f29bb | 61 | |
trivla | 0:adf5179f29bb | 62 | } |
trivla | 0:adf5179f29bb | 63 | |
trivla | 0:adf5179f29bb | 64 | |
trivla | 0:adf5179f29bb | 65 | void Ampel::rot() |
trivla | 0:adf5179f29bb | 66 | { |
trivla | 0:adf5179f29bb | 67 | pc.printf("ROT\n"); |
trivla | 0:adf5179f29bb | 68 | t3.reset(); |
trivla | 0:adf5179f29bb | 69 | while(1) { |
trivla | 0:adf5179f29bb | 70 | |
trivla | 0:adf5179f29bb | 71 | if(t3.read_ms()>3200) { // 3 sec sind abgelaufen |
trivla | 0:adf5179f29bb | 72 | state=2; |
trivla | 0:adf5179f29bb | 73 | return; |
trivla | 0:adf5179f29bb | 74 | } |
trivla | 0:adf5179f29bb | 75 | if(Btn1.CheckFlag()) { |
trivla | 0:adf5179f29bb | 76 | state=1; |
trivla | 0:adf5179f29bb | 77 | return; |
trivla | 0:adf5179f29bb | 78 | } |
trivla | 0:adf5179f29bb | 79 | rotAction(); |
trivla | 0:adf5179f29bb | 80 | } |
trivla | 0:adf5179f29bb | 81 | |
trivla | 0:adf5179f29bb | 82 | |
trivla | 0:adf5179f29bb | 83 | } |
trivla | 0:adf5179f29bb | 84 | void Ampel::rotAction() |
trivla | 0:adf5179f29bb | 85 | { |
trivla | 0:adf5179f29bb | 86 | if(t1.read_ms()>200) { //Blinken |
trivla | 0:adf5179f29bb | 87 | t1.reset(); |
trivla | 0:adf5179f29bb | 88 | |
trivla | 0:adf5179f29bb | 89 | if (lb==0) |
trivla | 0:adf5179f29bb | 90 | lb=1; |
trivla | 0:adf5179f29bb | 91 | else |
trivla | 0:adf5179f29bb | 92 | lb=0; |
trivla | 0:adf5179f29bb | 93 | } |
trivla | 0:adf5179f29bb | 94 | if(t2.read_ms()>100) { |
trivla | 0:adf5179f29bb | 95 | t2.reset(); |
trivla | 0:adf5179f29bb | 96 | pc.printf("2 %d \n" , t3.read_ms()); |
trivla | 0:adf5179f29bb | 97 | |
trivla | 0:adf5179f29bb | 98 | } |
trivla | 0:adf5179f29bb | 99 | } |
trivla | 0:adf5179f29bb | 100 | |
trivla | 0:adf5179f29bb | 101 | void Ampel::gelb() |
trivla | 0:adf5179f29bb | 102 | { |
trivla | 0:adf5179f29bb | 103 | pc.printf("gelb\n"); |
trivla | 0:adf5179f29bb | 104 | t3.reset(); |
trivla | 0:adf5179f29bb | 105 | while(1) { |
trivla | 0:adf5179f29bb | 106 | |
trivla | 0:adf5179f29bb | 107 | if(t3.read_ms()>4200) { // 3 sec sind abgelaufen |
trivla | 0:adf5179f29bb | 108 | state=3; |
trivla | 0:adf5179f29bb | 109 | return; |
trivla | 0:adf5179f29bb | 110 | } |
trivla | 0:adf5179f29bb | 111 | if(Btn1.CheckFlag()) { |
trivla | 0:adf5179f29bb | 112 | state=4; |
trivla | 0:adf5179f29bb | 113 | return; |
trivla | 0:adf5179f29bb | 114 | } |
trivla | 0:adf5179f29bb | 115 | gelbAction(); |
trivla | 0:adf5179f29bb | 116 | } |
trivla | 0:adf5179f29bb | 117 | |
trivla | 0:adf5179f29bb | 118 | } |
trivla | 0:adf5179f29bb | 119 | |
trivla | 0:adf5179f29bb | 120 | void Ampel::gelbAction() |
trivla | 0:adf5179f29bb | 121 | { |
trivla | 0:adf5179f29bb | 122 | if(t1.read_ms()>200) { //Blinken |
trivla | 0:adf5179f29bb | 123 | t1.reset(); |
trivla | 0:adf5179f29bb | 124 | |
trivla | 0:adf5179f29bb | 125 | if (lb==0) |
trivla | 0:adf5179f29bb | 126 | lb=2; |
trivla | 0:adf5179f29bb | 127 | else |
trivla | 0:adf5179f29bb | 128 | lb=0; |
trivla | 0:adf5179f29bb | 129 | } |
trivla | 0:adf5179f29bb | 130 | if(t2.read_ms()>100) { |
trivla | 0:adf5179f29bb | 131 | t2.reset(); |
trivla | 0:adf5179f29bb | 132 | pc.printf("2 %d \n" , t3.read_ms()); |
trivla | 0:adf5179f29bb | 133 | |
trivla | 0:adf5179f29bb | 134 | } |
trivla | 0:adf5179f29bb | 135 | } |
trivla | 0:adf5179f29bb | 136 | |
trivla | 0:adf5179f29bb | 137 | void Ampel::gruen() |
trivla | 0:adf5179f29bb | 138 | { |
trivla | 0:adf5179f29bb | 139 | pc.printf("gruen \n"); |
trivla | 0:adf5179f29bb | 140 | t3.reset(); |
trivla | 0:adf5179f29bb | 141 | while(1) { |
trivla | 0:adf5179f29bb | 142 | |
trivla | 0:adf5179f29bb | 143 | if(t3.read_ms()>5200) { // 3 sec sind abgelaufen |
trivla | 0:adf5179f29bb | 144 | state=3; |
trivla | 0:adf5179f29bb | 145 | return; |
trivla | 0:adf5179f29bb | 146 | } |
trivla | 0:adf5179f29bb | 147 | if(Btn1.CheckFlag()) { |
trivla | 0:adf5179f29bb | 148 | state=4; |
trivla | 0:adf5179f29bb | 149 | return; |
trivla | 0:adf5179f29bb | 150 | } |
trivla | 0:adf5179f29bb | 151 | gruenAction(); |
trivla | 0:adf5179f29bb | 152 | |
trivla | 0:adf5179f29bb | 153 | |
trivla | 0:adf5179f29bb | 154 | |
trivla | 0:adf5179f29bb | 155 | } |
trivla | 0:adf5179f29bb | 156 | |
trivla | 0:adf5179f29bb | 157 | } |
trivla | 0:adf5179f29bb | 158 | |
trivla | 0:adf5179f29bb | 159 | void Ampel::gruenAction() |
trivla | 0:adf5179f29bb | 160 | { |
trivla | 0:adf5179f29bb | 161 | if(t1.read_ms()>200) { //Blinken |
trivla | 0:adf5179f29bb | 162 | t1.reset(); |
trivla | 0:adf5179f29bb | 163 | |
trivla | 0:adf5179f29bb | 164 | if (lb==0) |
trivla | 0:adf5179f29bb | 165 | lb=4; |
trivla | 0:adf5179f29bb | 166 | else |
trivla | 0:adf5179f29bb | 167 | lb=0; |
trivla | 0:adf5179f29bb | 168 | } |
trivla | 0:adf5179f29bb | 169 | if(t2.read_ms()>100) { |
trivla | 0:adf5179f29bb | 170 | t2.reset(); |
trivla | 0:adf5179f29bb | 171 | pc.printf("2 %d \n" , t3.read_ms()); |
trivla | 0:adf5179f29bb | 172 | |
trivla | 0:adf5179f29bb | 173 | } |
trivla | 0:adf5179f29bb | 174 | |
trivla | 0:adf5179f29bb | 175 | } |
trivla | 0:adf5179f29bb | 176 | |
trivla | 0:adf5179f29bb | 177 | void Ampel::gruen_bl() |
trivla | 0:adf5179f29bb | 178 | { |
trivla | 0:adf5179f29bb | 179 | pc.printf("gruen BLinken \n"); |
trivla | 0:adf5179f29bb | 180 | t3.reset(); |
trivla | 0:adf5179f29bb | 181 | while(1) { |
trivla | 0:adf5179f29bb | 182 | |
trivla | 0:adf5179f29bb | 183 | if(t3.read_ms()>5200) { // 3 sec sind abgelaufen |
trivla | 0:adf5179f29bb | 184 | state=1; |
trivla | 0:adf5179f29bb | 185 | return; |
trivla | 0:adf5179f29bb | 186 | } |
trivla | 0:adf5179f29bb | 187 | |
trivla | 0:adf5179f29bb | 188 | gruen_blAction(); |
trivla | 0:adf5179f29bb | 189 | |
trivla | 0:adf5179f29bb | 190 | |
trivla | 0:adf5179f29bb | 191 | |
trivla | 0:adf5179f29bb | 192 | } |
trivla | 0:adf5179f29bb | 193 | |
trivla | 0:adf5179f29bb | 194 | } |
trivla | 0:adf5179f29bb | 195 | void Ampel::gruen_blAction() |
trivla | 0:adf5179f29bb | 196 | { |
trivla | 0:adf5179f29bb | 197 | if(t1.read_ms()>200) { //Blinken |
trivla | 0:adf5179f29bb | 198 | t1.reset(); |
trivla | 0:adf5179f29bb | 199 | |
trivla | 0:adf5179f29bb | 200 | if (lb==0) |
trivla | 0:adf5179f29bb | 201 | lb=3; |
trivla | 0:adf5179f29bb | 202 | else |
trivla | 0:adf5179f29bb | 203 | lb=0; |
trivla | 0:adf5179f29bb | 204 | } |
trivla | 0:adf5179f29bb | 205 | if(t2.read_ms()>100) { |
trivla | 0:adf5179f29bb | 206 | t2.reset(); |
trivla | 0:adf5179f29bb | 207 | pc.printf("2 %d \n" , t3.read_ms()); |
trivla | 0:adf5179f29bb | 208 | |
trivla | 0:adf5179f29bb | 209 | } |
trivla | 0:adf5179f29bb | 210 | |
trivla | 0:adf5179f29bb | 211 | } |