Raspberry Pi Pico Trafik Lambası (3 LED Sıralı, GP11/GP12/GP13)
Kırmızı, sarı ve yeşil LED'lerle gerçek trafik ışığı mantığını simüle ediyoruz — Pico serisinin 3 LED'e geçen ilk projesi! Yeşil 4 saniye "geç", sarı 1.5 saniye "hazırlan", kırmızı 3 saniye "dur" ve kırmızı+sarı 1 saniye "kalkış" (Avrupa trafik lambası pattern'i). Bu proje ile **fonksiyon tanımlama** (`def all_off()`), **durum makinesi mantığı** (sequence) ve **coklu GPIO senkronizasyonu** kavramlarını öğreneceksin. Devre çok basit: GP11 (Yeşil), GP12 (Sarı), GP13 (Kırmızı) pinlerine 3 LE

Video
Devre Şeması

Kaynak Kodu
1# ─────────────────────────────────────────
2# BlueGrays · bluegrays.com
3# Raspberry Pi Pico Trafik Lambası (3 LED Sıralı, GP11/GP12/GP13)
4# ─────────────────────────────────────────
5# Kırmızı, sarı ve yeşil LED'lerle gerçek trafik ışığı döngüsü: yeşil 4
6# sn, sarı 1.5 sn, kırmızı 3 sn, sonra kırmızı + sarı 1 sn (Avrupa tipi
7# kalkış). Tüm LED'leri söndüren yardımcı fonksiyon ile kod tekrarı
8# önlenir.
9#
10# Pinler:
11# GP11 -> Yeşil LED
12# GP12 -> Sarı LED
13# GP13 -> Kırmızı LED (her LED 220 ohm dirençle)
14# LED katotlari -> GND
15
16from machine import Pin
17from time import sleep
18
19# ============ PIN / PIN ============
20# Trafik lambası pinleri (yan yana GP11-GP12-GP13)
21green_led = Pin(11, Pin.OUT) # Yeşil LED: GEÇ
22yellow_led = Pin(12, Pin.OUT) # Sarı LED: HAZIRLAN
23red_led = Pin(13, Pin.OUT) # Kırmızı LED: DUR
24
25# ============ YARDIMCI FONKSİYON ============
26def all_off():
27 """
28 TR: Tum LED'leri sondur (DRY prensibi: tekrardan kacinmak icin)
29 EN: Turn off all LEDs (DRY principle: avoid repetition)
30 """
31 green_led.value(0)
32 yellow_led.value(0)
33 red_led.value(0)
34
35print("== BlueGrays · bluegrays.com ==")
36print("Trafik Lambasi / Traffic Light")
37print("Yesil: GP11 | Sari: GP12 | Kirmizi: GP13")
38
39# ============ ANA DÖNGÜ ============
40while True:
41 # 1) YEŞİL: GEÇ (4 sn)
42 all_off()
43 green_led.value(1)
44 print("[TRAFIK/TRAFFIC] YESIL / GREEN — GEC / GO")
45 sleep(4)
46
47 # 2) SARI: HAZIRLAN (1.5 sn)
48 all_off()
49 yellow_led.value(1)
50 print("[TRAFIK/TRAFFIC] SARI / YELLOW — HAZIRLAN / READY")
51 sleep(1.5)
52
53 # 3) KIRMIZI: DUR (3 sn)
54 all_off()
55 red_led.value(1)
56 print("[TRAFIK/TRAFFIC] KIRMIZI / RED — DUR / STOP")
57 sleep(3)
58
59 # 4) KIRMIZI + SARI: KALKIŞ (1 sn), Avrupa tipi
60 # Kalkış hazırlığı: sürücü vitese takar
61 yellow_led.value(1)
62 print("[TRAFIK/TRAFFIC] KIRMIZI+SARI / RED+YELLOW — KALKIS / STARTING")
63 sleep(1)
64Sıkça Sorulanlar
Kırmızı+sarı birlikte yanması ne anlama gelir?▾
Avrupa'daki bazı trafik ışıklarında kırmızıdan yeşile geçmeden önce kırmızı ve sarı birlikte yanar; sürücülere 'hazırlan' mesajı verir. Türkiye'de de bu desen kullanılır.
Fonksiyon tanımlamanın faydası ne?▾
all_off() gibi bir fonksiyon, tekrar eden üç satırı tek isimle çağırmanı sağlar. Kod kısalır, okunur hale gelir ve değişiklik tek yerden yapılır.
Süreleri nasıl değiştiririm?▾
Her ışık için sleep() içindeki saniye değerlerini değiştir. Değerleri dosyanın başında sabit olarak tanımlarsan (ör. GREEN_TIME = 4) ve sleep(GREEN_TIME) şeklinde kullanırsan ayarlamak çok kolaylaşır.
Yaya butonu ekleyebilir miyim?▾
Evet. Bir buton ekleyip basıldığında döngüyü kırmızıya geçirebilirsin. Butonun anında algılanması için sleep yerine ticks_ms() ile zamanlama yapmak gerekir; bu sonraki mod seçici projesinde anlatılır.
