//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 = 0;
//Ampel Funktion:
bool LEDSchleife = false;
long unsigned int LEDStart = 0;
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) == HIGH) {
LEDSchleife = true;
while (digitalRead(FS1) == HIGH) {
delay(25);
}
LEDStart = millis();
}
if (digitalRead(FS2) == HIGH) {
LEDSchleife = true;
while (digitalRead(FS2) == HIGH) {
delay(25);
}
LEDStart = millis();
}
if (digitalRead(SS1) == HIGH) {
STSchleife = true;
while (digitalRead(SS1) == HIGH){
delay(25);
}
STStart = millis();
}
while (LEDSchleife == true) {
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 = false;
while (digitalRead(SS1) == HIGH){
delay(25);
}
STStart = millis();
}
if ((millis() - LEDStart >= 0) && (millis() - LEDStart <= 500)) {
digitalWrite(AA1Gelb, HIGH);
digitalWrite(FARot, HIGH);
digitalWrite(AA2Gelb, HIGH);
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 = false;
while (digitalRead(SS1) == HIGH){
delay(25);
}
STStart = millis();
}
}
if ((millis() - LEDStart >= 3000) && (millis() - LEDStart <= 3500)) {
digitalWrite(AA1Rot, HIGH);
digitalWrite(AA2Rot, HIGH);
digitalWrite(AA1Gelb, LOW);
digitalWrite(AA2Gelb, LOW);
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 = false;
while (digitalRead(SS1) == HIGH){
delay(25);
}
STStart = millis();
}
}
if ((millis() - LEDStart >= 5000) && (millis() - LEDStart <= 5500)) {
digitalWrite(FAGruen, HIGH);
digitalWrite(FARot, LOW);
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 = false;
while (digitalRead(SS1) == HIGH){
delay(25);
}
STStart = millis();
}
}
if ((millis() - LEDStart >= 8000) && (millis() - LEDStart <= 8500)) {
digitalWrite(FARot, HIGH);
digitalWrite(FAGruen, LOW);
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 = false;
while (digitalRead(SS1) == HIGH){
delay(25);
}
STStart = millis();
}
}
if (millis() - LEDStart >= 10000) {
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 = false;
while (digitalRead(SS1) == HIGH){
delay(25);
}
STStart = millis();
}
}
}
}
while (STSchleife == true) {
if (millis() - STStart >= 125) {
digitalWrite(AA1Gelb, STStatus);
digitalWrite(AA2Gelb, STStatus);
STStatus = !STStatus;
STStart = millis();
if (digitalRead(SS1) == HIGH){
digitalWrite(AA1Gelb, LOW);
digitalWrite(AA2Gelb, LOW);
STStatus = false;
LEDSchleife = false;
STSchleife = false;
while (digitalRead(SS1) == HIGH){
delay(25);
}
LEDStart = millis();
}
}
if (digitalRead(SS1) == HIGH){
digitalWrite(AA1Gelb, LOW);
digitalWrite(AA2Gelb, LOW);
STStatus = false;
LEDSchleife = false;
STSchleife = false;
while (digitalRead(SS1) == HIGH){
delay(25);
}
LEDStart = millis();
}
}
}