lalalala

Dependencies:   mbed

Committer:
DoTTi
Date:
Thu Dec 07 10:01:15 2017 +0000
Revision:
0:1285025ec711
llalal;

Who changed what in which revision?

UserRevisionLine numberNew 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 }