Raspberry Pi Pico Ampel-Simulator (3 LEDs sequenziell, GP11/GP12/GP13)
Wir simulieren eine echte Ampel mit roten, gelben und grünen LEDs. Grün 4 Sek "gehen", gelb 1,5 Sek "bereit", rot 3 Sek "stopp" und rot+gelb 1 Sek "starten" (europäisches Ampelmuster). Lerne Funktionsdefinition, Zustandsmaschinen-Logik und Multi-GPIO-Synchronisation. Sehr einfache Schaltung: 3 LEDs an GP11/GP12/GP13, jeweils mit 220Ω Widerstand.

Video
Schaltplan

Quellcode
1# ─────────────────────────────────────────
2# BlueGrays · bluegrays.com
3# Raspberry Pi Pico Ampel-Simulator (3 LEDs sequenziell, GP11/GP12/GP13)
4# ─────────────────────────────────────────
5# Ein echter Ampelzyklus mit roter, gelber und grüner LED: Grün 4 s, Gelb
6# 1.5 s, Rot 3 s, dann Rot + Gelb 1 s (Start nach europäischer Art). Eine
7# Hilfsfunktion, die alle LEDs ausschaltet, vermeidet wiederholten Code.
8#
9# Pins:
10# GP11 -> Grüne LED
11# GP12 -> Gelbe LED
12# GP13 -> Rote LED (jede LED mit 220 Ohm)
13# LED katotlari -> LED-Kathoden -> GND
14
15from machine import Pin
16from time import sleep
17
18# ============ PIN / PIN ============
19# Ampel-Pins (benachbart GP11-GP12-GP13)
20green_led = Pin(11, Pin.OUT) # Grüne LED: GO
21yellow_led = Pin(12, Pin.OUT) # Gelbe LED: BEREIT
22red_led = Pin(13, Pin.OUT) # Rote LED: STOPP
23
24# ============ HILFSFUNKTION ============
25def all_off():
26 """
27 TR: Tum LED'leri sondur (DRY prensibi: tekrardan kacinmak icin)
28 EN: Turn off all LEDs (DRY principle: avoid repetition)
29 """
30 green_led.value(0)
31 yellow_led.value(0)
32 red_led.value(0)
33
34print("== BlueGrays · bluegrays.com ==")
35print("Trafik Lambasi / Traffic Light")
36print("Yesil: GP11 | Sari: GP12 | Kirmizi: GP13")
37
38# ============ HAUPTSCHLEIFE ============
39while True:
40 # GRÜN: GO (4 s)
41 all_off()
42 green_led.value(1)
43 print("[TRAFIK/TRAFFIC] YESIL / GREEN — GEC / GO")
44 sleep(4)
45
46 # GELB: BEREIT (1.5 s)
47 all_off()
48 yellow_led.value(1)
49 print("[TRAFIK/TRAFFIC] SARI / YELLOW — HAZIRLAN / READY")
50 sleep(1.5)
51
52 # ROT: STOPP (3 s)
53 all_off()
54 red_led.value(1)
55 print("[TRAFIK/TRAFFIC] KIRMIZI / RED — DUR / STOP")
56 sleep(3)
57
58 # ROT + GELB: START (1 s), europäische Art
59 # Startphase: Der Fahrer legt den Gang ein
60 yellow_led.value(1)
61 print("[TRAFIK/TRAFFIC] KIRMIZI+SARI / RED+YELLOW — KALKIS / STARTING")
62 sleep(1)
63FAQ
Was bedeutet es, wenn die rote und die gelbe Ampel gleichzeitig leuchten?▾
An einigen Ampeln in Europa leuchten Rot und Gelb gleichzeitig, bevor die Ampel von Rot auf Grün umschaltet; dies signalisiert den Autofahrern, sich bereit zu machen. Auch in der Türkei wird dieses Signal verwendet.
Was ist der Vorteil einer Funktionsdefinition?▾
Eine Funktion wie „all_off()“ ermöglicht es dir, drei sich wiederholende Zeilen mit einem einzigen Aufruf auszuführen. Der Code wird kürzer, lesbarer und Änderungen müssen nur an einer Stelle vorgenommen werden.
Wie kann ich die Zeiträume ändern?▾
Ändere für jede Leuchte die Sekundenwerte innerhalb von `sleep()`. Wenn du die Werte am Anfang der Datei als Konstanten definierst (z. B. `GREEN_TIME = 4`) und in Aufrufen wie `sleep(GREEN_TIME)` verwendest, lässt sich die Einstellung viel einfacher vornehmen.
Kann ich eine Fußgängertaste hinzufügen?▾
Ja. Du kannst eine Schaltfläche hinzufügen, die die Schleife auf Rot umschaltet, wenn sie gedrückt wird. Damit die Schaltfläche sofort erkannt wird, musst du statt „sleep“ die Funktion „ticks_ms()“ zur Zeitsteuerung verwenden; dies wird im nächsten Projekt zum Mod-Selektor erläutert.
