//Fußgänger Schalter:
const int FS1 = 13;
const int FS2 = 12;
//Störungs Schalter:
const int SS1 = 10;
//Auto Ampeln Links:
const int AA1Gelb = 9;
const int AA1Rot = 8;
//Füßgänger Ampeln:
const int FARot = 6;
const int FAGruen = 5;
//Auto Ampeln Rechts:
const int AA2Gelb = 3;
const int AA2Rot = 2;
//Störung funktion:
bool STSchleife = false;
bool STStatus = false;
long unsigned int STStart;
//Ampel Funktion:
bool LEDSchleife = false;
long unsigned int LEDStart;
void setup() {
pinMode(FS1, INPUT);
pinMode(FS2, INPUT);
pinMode(SS1, INPUT);
pinMode(AA1Gelb, OUTPUT);
pinMode(AA1Rot, OUTPUT);
pinMode(FARot, OUTPUT);
pinMode(FAGruen, OUTPUT);
pinMode(AA2Gelb, OUTPUT);
pinMode(AA2Rot, OUTPUT);
}
void loop() {
while (STSchleife == false) {
if ((digitalRead(FS1) || digitalRead(FS2)) == HIGH) {
LEDSchleife = true;
LEDStart = millis();
}
if (digitalRead(SS1) == HIGH) {
STSchleife = true;
STStart = millis();
}
while (LEDSchleife == true) {
if ((millis() - LEDStart >= 0) && (millis() - LEDStart <= 100)) {
digitalWrite(AA1Gelb, HIGH);
digitalWrite(FARot, HIGH);
digitalWrite(AA2Gelb, HIGH);
}
if ((millis() - LEDStart >= 3000) && (millis() - LEDStart <= 3100)) {
digitalWrite(AA1Rot, HIGH);
digitalWrite(AA2Rot, HIGH);
digitalWrite(AA1Gelb, LOW);
digitalWrite(AA2Gelb, LOW);
}
if ((millis() - LEDStart >= 5000) && (millis() - LEDStart <= 5100)) {
digitalWrite(FAGruen, HIGH);
digitalWrite(FARot, LOW);
}
if ((millis() - LEDStart >= 8000) && (millis() - LEDStart <= 8100)) {
digitalWrite(FARot, HIGH);
digitalWrite(FAGruen, LOW);
}
if ((millis() - LEDStart >= 10000) && (millis() - LEDStart <= 10100)) {
digitalWrite(AA1Rot, LOW);
digitalWrite(FARot, LOW);
digitalWrite(AA2Rot, LOW);
LEDSchleife = false;
}
if (digitalRead(SS1) == HIGH) {
digitalWrite(AA1Gelb, LOW);
digitalWrite(AA1Rot, LOW);
digitalWrite(FARot, LOW);
digitalWrite(FAGruen, LOW);
digitalWrite(AA2Gelb, LOW);
digitalWrite(AA2Rot, LOW);
LEDSchleife = false;
STSchleife = true;
STStart = millis();
}
}
}
while (STSchleife == true) {
if (millis() - STStart >= 125) {
digitalWrite(AA1Gelb, STStatus);
digitalWrite(AA2Gelb, STStatus);
STStatus = !STStatus;
STStart = millis();
}
}
}