Projekt B02 - Mehrere LEDs mit Timing steuern
Projekt B01 (LED Blinken) abgeschlossen
Was du brauchst
Für "Stop" - Längste Leuchtdauer
Pin 7
Für "Achtung" - Kurze Leuchtdauer
Pin 6
Für "Fahren" - Mittlere Leuchtdauer
Pin 5
3x Widerstand 220Ω (einer pro LED)
Jeder Zustand hat:
┌─────────────────┐
│ ROT (3s) │
└────────┬────────┘
↓
┌─────────────────┐
│ ROT+GELB (1s) │
└────────┬────────┘
↓
┌─────────────────┐
│ GRÜN (3s) │
└────────┬────────┘
↓
┌─────────────────┐
│ GELB (1s) │
└────────┬────────┘
│
└──────────→ zurück zu ROT
Drei LEDs parallel anschließen
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.
Ordne die LEDs vertikal an wie eine echte Ampel: Rot oben, Gelb Mitte, Grün unten.
// 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
}Die LEDs sollten nacheinander angehen und dann alle ausgehen.
// 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() { }Eine Funktion macht den Code übersichtlicher und wiederverwendbar. ampel(HIGH, LOW, LOW) ist lesbarer als drei einzelne digitalWrite()-Aufrufe.
// 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);
}Simulation in Wokwi
Füge drei LEDs (rot, gelb, grün) und drei Widerstände hinzu:
Probiere diese Aufgaben aus
Füge einen Taster hinzu. Wenn gedrückt, wechselt die Ampel nach einer Verzögerung auf Grün für Fußgänger.
Lass nur Gelb blinken (0.5s an, 0.5s aus) als Nachtmodus.
Baue zwei Ampeln, die synchronisiert sind (wenn eine Rot ist, ist die andere Grün).
Zeige auf dem seriellen Monitor, wie viele Sekunden noch bis zum nächsten Wechsel.
Du hast eine funktionierende Ampel gebaut
Drei Ausgänge parallel
Sequenz von Zuständen
Code organisieren
B03: Taster und Entprellung - Eingaben verarbeiten