🚦

Ampelschaltung

Projekt B02 - Mehrere LEDs mit Timing steuern

Beginner
3x LED
3x 220Ω
1
Lernziele

Was du lernst

  • Mehrere Ausgänge steuern - Drei LEDs gleichzeitig verwalten
  • Zustandsautomat - Sequenz von Zuständen durchlaufen
  • Timing-Sequenzen - Unterschiedliche Wartezeiten programmieren
  • Funktionen - Code in Funktionen organisieren

Voraussetzungen

Projekt B01 (LED Blinken) abgeschlossen

Komponenten

Was du brauchst

🔴

Rote LED

Für "Stop" - Längste Leuchtdauer

Pin 7

🟡

Gelbe LED

Für "Achtung" - Kurze Leuchtdauer

Pin 6

🟢

Grüne LED

Für "Fahren" - Mittlere Leuchtdauer

Pin 5

Zusätzlich benötigt

3x Widerstand 220Ω (einer pro LED)

2
Theorie

Die deutsche Ampelschaltung

Ampelphasen

  1. Rot (3 Sekunden) - Stop
  2. Rot + Gelb (1 Sekunde) - Vorbereiten
  3. Grün (3 Sekunden) - Fahren
  4. Gelb (1 Sekunde) - Bremsen
  5. Zurück zu Rot...

Zustandsautomat

Jeder Zustand hat:

  • Aktive LEDs (welche leuchten)
  • Dauer (wie lange)
  • Nachfolger (nächster Zustand)

Zustandsdiagramm

    ┌─────────────────┐
    │   ROT (3s)      │
    └────────┬────────┘
             ↓
    ┌─────────────────┐
    │ ROT+GELB (1s)   │
    └────────┬────────┘
             ↓
    ┌─────────────────┐
    │   GRÜN (3s)     │
    └────────┬────────┘
             ↓
    ┌─────────────────┐
    │   GELB (1s)     │
    └────────┬────────┘
             │
             └──────────→ zurück zu ROT
            

Schaltplan

Drei LEDs parallel anschließen

Verbindungen

  Pin 7 ──[220Ω]──🔴── GND
  Pin 6 ──[220Ω]──🟡── GND
  Pin 5 ──[220Ω]──🟢── GND
            

Jede LED hat ihren eigenen Pin und Vorwiderstand, aber alle teilen sich GND.

Pin-Belegung

  • Pin 7 → Rot
  • Pin 6 → Gelb
  • Pin 5 → Grün
  • GND → Alle Kathoden

Tipp

Ordne die LEDs vertikal an wie eine echte Ampel: Rot oben, Gelb Mitte, Grün unten.

3
Code

Schritt 1: LEDs initialisieren

// Schritt 1: Alle drei LEDs konfigurieren

const int LED_ROT = 7;
const int LED_GELB = 6;
const int LED_GRUEN = 5;

void setup() {
  pinMode(LED_ROT, OUTPUT);
  pinMode(LED_GELB, OUTPUT);
  pinMode(LED_GRUEN, OUTPUT);

  // Test: Alle LEDs nacheinander einschalten
  digitalWrite(LED_ROT, HIGH);
  delay(1000);
  digitalWrite(LED_GELB, HIGH);
  delay(1000);
  digitalWrite(LED_GRUEN, HIGH);
  delay(1000);

  // Alle aus
  digitalWrite(LED_ROT, LOW);
  digitalWrite(LED_GELB, LOW);
  digitalWrite(LED_GRUEN, LOW);
}

void loop() {
  // Noch leer
}

Teste es!

Die LEDs sollten nacheinander angehen und dann alle ausgehen.

3
Code

Schritt 2: Hilfsfunktion erstellen

// Schritt 2: Funktion zum Setzen der Ampel

const int LED_ROT = 7;
const int LED_GELB = 6;
const int LED_GRUEN = 5;

// Hilfsfunktion: Setzt den Zustand aller drei LEDs
void ampel(int rot, int gelb, int gruen) {
  digitalWrite(LED_ROT, rot);
  digitalWrite(LED_GELB, gelb);
  digitalWrite(LED_GRUEN, gruen);
}

void setup() {
  pinMode(LED_ROT, OUTPUT);
  pinMode(LED_GELB, OUTPUT);
  pinMode(LED_GRUEN, OUTPUT);

  // Test der Funktion
  ampel(HIGH, LOW, LOW);   // Nur Rot
  delay(1000);
  ampel(HIGH, HIGH, LOW);  // Rot + Gelb
  delay(1000);
  ampel(LOW, LOW, HIGH);   // Nur Gruen
  delay(1000);
  ampel(LOW, LOW, LOW);    // Alle aus
}

void loop() { }

Warum Funktionen?

Eine Funktion macht den Code übersichtlicher und wiederverwendbar. ampel(HIGH, LOW, LOW) ist lesbarer als drei einzelne digitalWrite()-Aufrufe.

3
Code

Schritt 3: Komplette Ampelschaltung

// Fertige Version: Ampelschaltung

const int LED_ROT = 7;
const int LED_GELB = 6;
const int LED_GRUEN = 5;

void ampel(int rot, int gelb, int gruen) {
  digitalWrite(LED_ROT, rot);
  digitalWrite(LED_GELB, gelb);
  digitalWrite(LED_GRUEN, gruen);
}

void setup() {
  pinMode(LED_ROT, OUTPUT);
  pinMode(LED_GELB, OUTPUT);
  pinMode(LED_GRUEN, OUTPUT);
  Serial.begin(9600);
  Serial.println("Ampelschaltung gestartet!");
}

void loop() {
  ampel(HIGH, LOW, LOW);   // Rot
  delay(3000);
  ampel(HIGH, HIGH, LOW);  // Rot + Gelb
  delay(1000);
  ampel(LOW, LOW, HIGH);   // Gruen
  delay(3000);
  ampel(LOW, HIGH, LOW);   // Gelb
  delay(1000);
}

Ausprobieren

Simulation in Wokwi

Wokwi Projekt

Füge drei LEDs (rot, gelb, grün) und drei Widerstände hinzu:

So testest du

  • Füge 3 LEDs hinzu und setze die Farben (Rechtsklick → Bearbeiten)
  • Füge 3 Widerstände (220Ω) hinzu
  • Verbinde Pin 7→Rot, Pin 6→Gelb, Pin 5→Grün
  • Alle Kathoden → GND
4
Challenges

Erweiterungen

Probiere diese Aufgaben aus

🚶

Challenge 1: Fußgängerampel

Füge einen Taster hinzu. Wenn gedrückt, wechselt die Ampel nach einer Verzögerung auf Grün für Fußgänger.

🌙

Challenge 2: Nachtmodus

Lass nur Gelb blinken (0.5s an, 0.5s aus) als Nachtmodus.

🚗

Challenge 3: Kreuzung

Baue zwei Ampeln, die synchronisiert sind (wenn eine Rot ist, ist die andere Grün).

⏱️

Challenge 4: Countdown

Zeige auf dem seriellen Monitor, wie viele Sekunden noch bis zum nächsten Wechsel.

🚦

Geschafft!

Du hast eine funktionierende Ampel gebaut

Mehrere LEDs

Drei Ausgänge parallel

Zustandsautomat

Sequenz von Zuständen

Funktionen

Code organisieren

Nächstes Projekt

B03: Taster und Entprellung - Eingaben verarbeiten

← →
1 / 11