Wie sieht dazu ein Arduino-Programm aus?

1 Antwort

Hallo :)

das ganze könnte folgender maßen aussehen:

const int LED_RED = 9;   // Pin für die rote Ampel
const int LED_YELLOW = 10;  // Pin für die gelbe Ampel
const int LED_GREEN = 11;  // Pin für die grüne Ampel
const int BUTTON_PED = 2;  // Pin für den Knopf der Fußgängerampel

// Dauer der einzelnen Phasen in Millisekunden
const int PHASE_RED = 10000;
const int PHASE_YELLOW = 1000;
const int PHASE_GREEN = 9000;
const int PHASE_PED_GREEN = 55000;
const int PHASE_TRANSITION = 2500;

void setup() {
  pinMode(LED_RED, OUTPUT);
  pinMode(LED_YELLOW, OUTPUT);
  pinMode(LED_GREEN, OUTPUT);
  pinMode(BUTTON_PED, INPUT_PULLUP);
}

void loop() {
  // Fahrzeugampel auf Grün setzen
  digitalWrite(LED_GREEN, HIGH);
  delay(PHASE_GREEN);

  // Fahrzeugampel auf Gelb setzen
  digitalWrite(LED_GREEN, LOW);
  digitalWrite(LED_YELLOW, HIGH);
  delay(PHASE_YELLOW);

  // Fahrzeugampel auf Rot setzen
  digitalWrite(LED_YELLOW, LOW);
  digitalWrite(LED_RED, HIGH);

  // Übergangsphase "Alle Rot"
  delay(PHASE_TRANSITION);

  // Fußgängerampel auf Grün setzen, wenn der Knopf gedrückt wurde
  if (digitalRead(BUTTON_PED) == LOW) {
    digitalWrite(LED_RED, LOW);
    digitalWrite(LED_GREEN, HIGH);
    delay(PHASE_PED_GREEN);
  }

  // Fußgängerampel auf Rot setzen
  digitalWrite(LED_GREEN, LOW);
  digitalWrite(LED_RED, HIGH);

  // Warte auf das Ende der Rotphase für Fahrzeuge
  delay(PHASE_RED - PHASE_TRANSITION);
}