//Fußgänger Schalter:
const int FS1 = 12;
const int FS2 = 11;
//Stoerungs 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;
//Stoerung funktion:
bool Stoerung = false;
bool STStatus = false;
long unsigned int STStart = 0;
//Ampel Funktion:
bool Ablauf = false;
long unsigned int LEDStart = 0;
//ZEIT AUSGABE
long unsigned int myTime;
bool Time = true;
int BlinkStatus = 0;
long unsigned int STNEU;
long unsigned int STNEW;
void setup() {
pinMode(FS1, INPUT_PULLUP);
pinMode(FS2, INPUT_PULLUP);
pinMode(SS1, INPUT_PULLUP);
pinMode(AA1Gelb, OUTPUT);
pinMode(AA1Rot, OUTPUT);
pinMode(FARot, OUTPUT);
pinMode(FAGruen, OUTPUT);
pinMode(AA2Gelb, OUTPUT);
pinMode(AA2Rot, OUTPUT);
Serial.begin(9600);
}
void loop() {
while((Ablauf == false) && (Stoerung == false)){
Serial.print("Zeit: ");
myTime = millis();
Serial.println(myTime);
if(digitalRead(FS1) == LOW){
Ablauf = true;
LEDStart = millis();
Serial.println("Gedrückt");
STNEW = millis();
}
if(digitalRead(FS2) == LOW){
Ablauf = true;
LEDStart = millis();
Serial.println("Gedrückt");
STNEW = millis();
}
if(digitalRead(SS1) == LOW){
digitalWrite(AA1Gelb, LOW);
digitalWrite(AA2Gelb, LOW);
digitalWrite(AA1Rot, LOW);
digitalWrite(AA2Rot, LOW);
digitalWrite(FARot, LOW);
digitalWrite(FAGruen, LOW);
Stoerung = true;
BlinkStatus = 0;
Serial.println("Störung Gedrückt");
while(digitalRead(SS1) == LOW){
delay(10);
}
STStart = millis();
STNEU = millis();
}
}
while(Stoerung == true){
Serial.println(millis() - STNEU);
if(millis() - STStart >= 125) {
digitalWrite(AA1Gelb, STStatus);
digitalWrite(AA2Gelb, STStatus);
STStatus = !STStatus;
STStart = millis();
Serial.println(millis() - STNEU);
}
if(millis() - STNEU >= 10000){
digitalWrite(AA1Gelb, HIGH);
digitalWrite(AA2Gelb, HIGH);
digitalWrite(AA1Rot, HIGH);
digitalWrite(AA2Rot, HIGH);
digitalWrite(FAGruen, HIGH);
digitalWrite(FARot, HIGH);
delay(50);
digitalWrite(AA1Gelb, LOW);
digitalWrite(AA2Gelb, LOW);
digitalWrite(AA1Rot, LOW);
digitalWrite(AA2Rot, LOW);
digitalWrite(FAGruen, LOW);
digitalWrite(FARot, LOW);
Stoerung = false;
}
if(digitalRead(SS1) == LOW){
digitalWrite(AA1Gelb, LOW);
digitalWrite(AA2Gelb, LOW);
Stoerung = false;
Serial.println("Störung Gedrückt");
while(digitalRead(SS1) == LOW){
delay(10);
}
}
}
while(Ablauf == true){
//Serial.println(millis() - STNEW);
if((millis() - LEDStart >= 10) && (millis() - LEDStart <= 25)){
digitalWrite(AA1Gelb, HIGH);
digitalWrite(FARot, HIGH);
digitalWrite(AA2Gelb, HIGH);
Serial.println(millis() - STNEW);
}
if((millis() - LEDStart >= 3000) && (millis() - LEDStart <= 3015)) {
digitalWrite(AA1Rot, HIGH);
digitalWrite(AA2Rot, HIGH);
digitalWrite(AA1Gelb, LOW);
digitalWrite(AA2Gelb, LOW);
Serial.println(millis() - STNEW);
}
if((millis() - LEDStart >= 5000) && (millis() - LEDStart <= 5015)) {
digitalWrite(FAGruen, HIGH);
digitalWrite(FARot, LOW);
Serial.println(millis() - STNEW);
}
if((millis() - LEDStart >= 8000) && (millis() - LEDStart <= 8015)) {
digitalWrite(FARot, HIGH);
digitalWrite(FAGruen, LOW);
Serial.println(millis() - STNEW);
}
if((millis() - LEDStart >= 9000) && (millis() - LEDStart <= 9015)){
digitalWrite(AA1Rot, LOW);
digitalWrite(FARot, LOW);
digitalWrite(AA2Rot, LOW);
Serial.println(millis() - STNEW);
Ablauf = false;
}
if(digitalRead(SS1) == LOW){
digitalWrite(AA1Gelb, LOW);
digitalWrite(AA2Gelb, LOW);
digitalWrite(AA1Rot, LOW);
digitalWrite(AA2Rot, LOW);
digitalWrite(FARot, LOW);
digitalWrite(FAGruen, LOW);
Ablauf = false;
Stoerung = true;
Serial.println("Störung Gedrückt");
while(digitalRead(SS1) == LOW){
delay(10);
}
STStart = millis();
STNEU = millis();
}
}
}