// Ampelanlage
//
// Grünzeit
// Umlaufzeit (in der Regel zwischen 45 und 120 Sekunden)
//
// Farbfolge
// Grün - Gelb (t_G) - Rot - Rot und Gelb (t_RG,gleichzeitig) - Grün
//
// Übergangszeiten
// t_G
// 50 km/h: t_G = 3s
// 60 km/h: t_G = 4s
// 70 km/s: t_G = 5s
//
// t_RG = 1s
//
// https://docs.arduino.cc/programming/
//
int t_yello = 3;
int t_red = 4;
int t_green = 4;
int t_redyello = 1;
struct traficlight_t {
uint16_t redPin;
uint16_t yelloPin;
uint16_t greenPin;
};
const byte RED = 1;
const byte YELLO = 2;
const byte GREEN = 4;
// Ampel 1
traficlight_t a1 = {5,6,7};
void setup() {
// put your setup code here, to run once:
pinMode(a1.redPin,OUTPUT);
pinMode(a1.yelloPin,OUTPUT);
pinMode(a1.greenPin,OUTPUT);
}
void setTraficLight(traficlight_t a, byte tl) {
digitalWrite(a.greenPin,tl&GREEN?HIGH:LOW);
digitalWrite(a.yelloPin,tl&YELLO?HIGH:LOW);
digitalWrite(a.redPin ,tl&RED ?HIGH:LOW);
}
void loop() {
// put your main code here, to run repeatedly:
setTraficLight(a1,GREEN);
delay(1000*t_green);
setTraficLight(a1,YELLO);
delay(1000*t_yello);
setTraficLight(a1,RED);
delay(1000*t_red);
setTraficLight(a1,RED|YELLO);
delay(1000*t_redyello);
}