Hier der 2. Teil.
// Nachtschaltung
void Nachtblinken(){
if (millis() - ampelMillis >= ampelIntervall) {
switch (zustand) {
case ROT:
//Fussgänger
digitalWrite(fgRotPin,LOW);
digitalWrite(fgGruenPin,LOW);
// Ampel_1
digitalWrite(RotPin, LOW);
digitalWrite(GelbPin, HIGH);
digitalWrite(GruenPin, LOW);
// Ampel_2_nur Geradeaus
digitalWrite(RotPin1, LOW);
digitalWrite(GelbPin1,HIGH);
digitalWrite(GruenPin1, LOW);
//Ampel_3 Gerade aus und rechts Abbieger
digitalWrite(RotPin2, LOW);
digitalWrite(GelbPin2, HIGH);
digitalWrite(GruenPin2, LOW);
// Ampel_4 Links Abbieger
digitalWrite(RotPin3, LOW);
digitalWrite(GelbPin3, HIGH);
digitalWrite(GruenPin3, LOW);
zustand = BLINKEN2;
ampelMillis = millis();
ampelIntervall = ZEITGELBPHASE;
break;
case BLINKEN2:
//Ampel_1
digitalWrite(GelbPin, LOW);
// Ampel_2_nur Geradeaus
digitalWrite(GelbPin1,LOW);
//Ampel_3 Gerade aus und rechts Abbieger
digitalWrite(GelbPin2, LOW);
// Ampel_4 Links Abbieger
digitalWrite(GelbPin3, LOW);
zustand = ROT;
ampelMillis = millis();
ampelIntervall = ZEITGELBPHASE;
break;}}
}
//Tagesschaltung
void Tagesablauf() {
if (millis() - ampelMillis >= ampelIntervall) {
switch (zustand) {
case ROT:
//Fussgänger
digitalWrite(fgRotPin,LOW);
digitalWrite(fgGruenPin, HIGH);
// Ampel_1 Ausgangsampel_links+rechts
digitalWrite(RotPin, HIGH);
digitalWrite(GelbPin, LOW);
digitalWrite(GruenPin, LOW);
// Ampel_2_nur Geradeaus
digitalWrite(RotPin1, LOW);
digitalWrite(GelbPin1, LOW);
digitalWrite(GruenPin1, HIGH);
//Ampel_3 Gerade aus und rechts Abbieger
digitalWrite(RotPin2, HIGH);
digitalWrite(GelbPin2, LOW);
digitalWrite(GruenPin2, LOW);
//Ampel_4 Links Abbieger
digitalWrite(RotPin3, HIGH);
digitalWrite(GelbPin3, LOW);
digitalWrite(GruenPin3, LOW);
zustand = ROTGELB1;
ampelMillis = millis();
ampelIntervall = ZEITROTPHASE;
break;
case ROTGELB1:
//Fussgänger
digitalWrite(fgRotPin, HIGH);
digitalWrite(fgGruenPin,LOW);
//Ampel_1 Ausgangsampel_links+rechts
digitalWrite(RotPin,HIGH);
digitalWrite(GelbPin, LOW);
digitalWrite(GruenPin, LOW);
//Ampel_2_nur Geradeaus
digitalWrite(RotPin1, LOW);
digitalWrite(GelbPin1, LOW);
digitalWrite(GruenPin1, HIGH);
//Ampel_3 Gerade aus und rechts Abbieger
digitalWrite(RotPin2,LOW);
digitalWrite(GelbPin2, HIGH);
digitalWrite(GruenPin2, LOW);
//Ampel_4 Links Abbieger
digitalWrite(RotPin3, HIGH);
zustand = ROTROT;
ampelMillis = millis();
ampelIntervall = ZEITGELBPHASE;
break;
case ROTROT:
//Fussgänger
digitalWrite(fgRotPin,HIGH);
digitalWrite(fgGruenPin,LOW);
// Ampel_1 Ausgangsampel_links+rechts
digitalWrite(RotPin, HIGH);
digitalWrite(GelbPin, LOW);
digitalWrite(GruenPin, LOW);
// Ampel_2_nur Geradeaus
digitalWrite(RotPin1, LOW);
digitalWrite(GelbPin1, LOW);
digitalWrite(GruenPin1, HIGH);
//Ampel_3 Gerade aus und rechts Abbieger
digitalWrite(RotPin2, LOW);
digitalWrite(GelbPin2, LOW);
digitalWrite(GruenPin2, HIGH);
//Ampel_4 Links Abbieger
digitalWrite(RotPin3, HIGH);
zustand = ROTGELB2;
ampelMillis = millis();
ampelIntervall = ZEITROTPHASE;
break;
case ROTGELB2:
//Fussgänger
digitalWrite(fgRotPin, HIGH);
digitalWrite(fgGruenPin,LOW);
//Ampel_1 Ausgangsampel_links+rechts
digitalWrite(RotPin,LOW);
digitalWrite(GelbPin, HIGH);
digitalWrite(GruenPin, LOW);
//Ampel_2_nur Geradeaus
digitalWrite(RotPin1, LOW);
digitalWrite(GelbPin1, HIGH);
digitalWrite(GruenPin1, LOW);
//Ampel_3 Gerade aus und rechts Abbieger
digitalWrite(RotPin2,LOW);
digitalWrite(GelbPin2, HIGH);
digitalWrite(GruenPin2, LOW);
//Ampel_4 Links Abbieger
digitalWrite(RotPin3, HIGH);
zustand = GRUEN;
ampelMillis = millis();
ampelIntervall = ZEITGELBPHASE;
break;
case GRUEN:
//Fussgänger
digitalWrite(fgGruenPin,LOW);
digitalWrite(fgRotPin, HIGH);
//Ampel_1 Ausgangsampel_links+rechts
digitalWrite(RotPin, LOW);
digitalWrite(GelbPin, LOW);
digitalWrite(GruenPin, HIGH);
//Ampel_2_nur Geradeaus
digitalWrite(RotPin1, HIGH);
digitalWrite(GelbPin1, LOW);
digitalWrite(GruenPin1, LOW);
//Ampel_3 Gerade aus und rechts Abbieger
digitalWrite(RotPin2,HIGH);
digitalWrite(GelbPin2, LOW);
digitalWrite(GruenPin2, LOW);
//Ampel_4 Links Abbieger
digitalWrite(RotPin3, HIGH);
zustand = GELB;
ampelMillis = millis();
ampelIntervall = ZEITGRUENPHASE;
break;
case GELB:
//Fussgänger
digitalWrite(fgRotPin, HIGH);
//Ampel_1 Ausgangsampel_links+rechts
digitalWrite(RotPin, LOW);
digitalWrite(GelbPin, HIGH);
digitalWrite(GruenPin, LOW);
//Ampel_2_nur Geradeaus
digitalWrite(RotPin1, LOW);
digitalWrite(GelbPin1, HIGH);
digitalWrite(GruenPin1, LOW);
//Ampel_3 Gerade aus und rechts Abbieger
digitalWrite(RotPin2,HIGH);
//Ampel_4 Links Abbieger
digitalWrite(RotPin3, LOW);
digitalWrite(GelbPin3, HIGH);
digitalWrite(GruenPin3, LOW);
zustand = GELBGRUEN;
ampelMillis = millis();
ampelIntervall = ZEITGELBPHASE;
break;
case GELBGRUEN:
//Fussgänger
digitalWrite(fgRotPin, HIGH);
//Ampel_1 Ausgangsampel_links+rechts
digitalWrite(RotPin, HIGH);
digitalWrite(GelbPin, LOW);
digitalWrite(GruenPin, LOW);
//Ampel_2_nur Geradeaus
digitalWrite(RotPin1, LOW);
digitalWrite(GelbPin1, LOW);
digitalWrite(GruenPin1, HIGH);
//Ampel_3 Gerade aus und rechts Abbieger
digitalWrite(RotPin2,HIGH);
//Ampel_4 Links Abbieger
digitalWrite(RotPin3, LOW);
digitalWrite(GelbPin3, LOW);
digitalWrite(GruenPin3, HIGH);
zustand = GRUENGELB;
ampelMillis = millis();
ampelIntervall = ZEITGELBPHASE;
break;
case GRUENGELB:
//Fussgänger
digitalWrite(fgRotPin, HIGH);
//Ampel_1 Ausgangsampel_links+rechts
digitalWrite(RotPin, HIGH);
//Ampel_2_nur Geradeaus
digitalWrite(GruenPin1, HIGH);
//Ampel_3 Gerade aus und rechts Abbieger
digitalWrite(RotPin2,HIGH);
//Ampel_4 Links Abbieger
digitalWrite(GelbPin3, HIGH);
digitalWrite(GruenPin3, LOW);
zustand = ROT;
ampelMillis = millis();
ampelIntervall = ZEITGELBPHASE;
break;
}}}