/*
Ampelsteuerung
Author: Gregor Mausser
Date: 26.11.2025
*/
//Pins definieren
int LedPinRotAuto = 13; //Autoampel Rot
int LedPinGelbAuto = 12; //Autoampel Gelb
int LedPinGruenAuto = 11; //Autoampel Gruen
int LedPinRotFussgaenger = 10; //Fußgaengerampel Rot
int LedPinGruenFussgaenger = 9; //Fußgaengerampel Gruen
int buttonPin = 3; //Button Fußgaengerampel aktivieren
int SlideSwitchPin3 = 4; //Slide-Switch Ampelanlade nicht aktiv
int SlideSwitchPin1 = 5; //Slide-Switch Ampelanlade nicht aktiv
void setup() {
Serial.begin(9600);
pinMode(LedPinRotAuto, OUTPUT);
pinMode(LedPinGelbAuto, OUTPUT);
pinMode(LedPinGruenAuto, OUTPUT);
pinMode(LedPinRotFussgaenger, OUTPUT);
pinMode(LedPinGruenFussgaenger, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
pinMode(SlideSwitchPin3, INPUT_PULLUP);
pinMode(SlideSwitchPin1, INPUT_PULLUP);
}
void loop() {
//Abfrage ob die Ampel aktiv ist
if (digitalRead(SlideSwitchPin1) == HIGH)
{
digitalWrite(LedPinGruenAuto, LOW);
digitalWrite(LedPinRotFussgaenger, LOW);
//An
digitalWrite(LedPinGelbAuto, HIGH);
Serial.println("Die Ampel ist außer Betrieb");
delay(1000);
//Aus
digitalWrite(LedPinGelbAuto, LOW);
Serial.println("Die Ampel ist außer Betrieb");
delay(1000);
}
digitalWrite(LedPinGelbAuto, LOW);
digitalWrite(LedPinGruenAuto,digitalRead((SlideSwitchPin3)));
digitalWrite(LedPinRotFussgaenger,digitalRead((SlideSwitchPin3)));
//Abfrage ob jemand die Straße überqueren will
if(digitalRead(buttonPin) == LOW)
{
//Grünes dauerlicht abschalten
digitalWrite(LedPinGruenAuto, LOW);
//Grünes blinken für Auto
for(int i = 0; i<4; i++){
//Aus
digitalWrite(LedPinGruenAuto, LOW);
digitalWrite(LedPinRotFussgaenger, HIGH);
Serial.println("Fussgaengerampel Rot, Autoampel blinkt Gruen(aus)");
delay(1000);
//An
digitalWrite(LedPinGruenAuto, HIGH);
digitalWrite(LedPinRotFussgaenger, HIGH);
Serial.println("Fussgaengerampel blinkt Gruen(an), Autoampel Rot");
delay(1000);
}
//Grünes blinken abschalten
digitalWrite(LedPinGruenAuto, LOW);
//Gelb für Autos und Rot für Fußgaenger
digitalWrite(LedPinGelbAuto, HIGH);
digitalWrite(LedPinRotFussgaenger, HIGH);
Serial.println("Fussgaengerampel Rot, Autoampel Gelb");
delay(3000);
digitalWrite(LedPinGelbAuto, LOW);
digitalWrite(LedPinRotFussgaenger, LOW);
//Rot für Autos und Fußgaenger
digitalWrite(LedPinRotAuto, HIGH);
digitalWrite(LedPinRotFussgaenger, HIGH);
Serial.println("Fussgaengerampel Rot, Autoampel Rot");
delay(1500);
digitalWrite(LedPinRotAuto, LOW);
digitalWrite(LedPinRotFussgaenger, LOW);
//Rot für Autos und Fußgaenger
digitalWrite(LedPinRotAuto, HIGH);
digitalWrite(LedPinGruenFussgaenger, HIGH);
Serial.println("Fussgaengerampel Gruen, Autoampel Rot");
delay(3000);
digitalWrite(LedPinRotAuto, LOW);
digitalWrite(LedPinGruenFussgaenger, LOW);
//Grün blinkt 4 mal
//Aus
digitalWrite(LedPinRotAuto, HIGH);
digitalWrite(LedPinGruenFussgaenger, LOW);
Serial.println("Fussgaengerampel blinkt Gruen(aus), Autoampel Rot");
delay(1000);
//An
digitalWrite(LedPinRotAuto, HIGH);
digitalWrite(LedPinGruenFussgaenger, HIGH);
Serial.println("Fussgaengerampel blinkt Gruen(an), Autoampel Rot");
delay(1000);
//Aus
digitalWrite(LedPinRotAuto, HIGH);
digitalWrite(LedPinGruenFussgaenger, LOW);
Serial.println("Fussgaengerampel blinkt Gruen(aus), Autoampel Rot");
delay(1000);
//An
digitalWrite(LedPinRotAuto, HIGH);
digitalWrite(LedPinGruenFussgaenger, HIGH);
Serial.println("Fussgaengerampel blinkt Gruen (an), Autoampel Rot");
delay(1000);
//Aus
digitalWrite(LedPinRotAuto, HIGH);
digitalWrite(LedPinGruenFussgaenger, LOW);
Serial.println("Fussgaengerampel blinkt Gruen(aus), Autoampel Rot");
delay(1000);
//An
digitalWrite(LedPinRotAuto, HIGH);
digitalWrite(LedPinGruenFussgaenger, HIGH);
Serial.println("Fussgaengerampel blinkt Gruen(an), Autoampel Rot");
delay(1000);
//Aus
digitalWrite(LedPinRotAuto, HIGH);
digitalWrite(LedPinGruenFussgaenger, LOW);
Serial.println("Fussgaengerampel blinkt Gruen(aus), Autoampel Rot");
delay(1000);
//An
digitalWrite(LedPinRotAuto, HIGH);
digitalWrite(LedPinGruenFussgaenger, HIGH);
Serial.println("Fussgaengerampel blinkt Gruen(an), Autoampel Rot");
delay(1000);
//Fußgängerampel Rot, Autoampel Rot u. Gelb
digitalWrite(LedPinRotAuto, HIGH);
digitalWrite(LedPinGelbAuto, HIGH);
digitalWrite(LedPinRotFussgaenger, HIGH);
Serial.println("Fussgaengerampel Rot, Autoampel Rot");
digitalWrite(LedPinGruenFussgaenger, LOW);
delay(1500);
digitalWrite(LedPinRotAuto, LOW);
digitalWrite(LedPinGelbAuto, LOW);
digitalWrite(LedPinGruenFussgaenger, LOW);
}
}