#150Pemula

Simulator Lampu Lalu Lintas Raspberry Pi Pico (3 LED Berurutan)

Kita menyimulasikan lampu lalu lintas sungguhan dengan LED merah, kuning, dan hijau; proyek 3 LED pertama di seri Pico! Hijau 4 detik "jalan", kuning 1,5 detik "siap", merah 3 detik "berhenti", dan merah+kuning 1 detik "bersiap" (pola Eropa). Pelajari pendefinisian fungsi (def all_off()), logika state machine, dan sinkronisasi beberapa GPIO. 3 LED di GP11 (Hijau), GP12 (Kuning), GP13 (Merah), masing-masing dengan resistor 220Ω, berdampingan di board.

4.0(1)
12 selesai
Simulator Lampu Lalu Lintas Raspberry Pi Pico (3 LED Berurutan)
Kamu membawa lampu lalu lintas yang kamu lewati setiap hari langsung ke mejamu. Hijau menyala 4 detik, kuning memberi peringatan singkat, merah menahanmu 3 detik, lalu merah dan kuning menyala bersama untuk berkata "bersiap, hijau segera datang" dan siklusnya dimulai lagi. Cara paling sederhana menjalankan tiga LED secara berurutan dengan Raspberry Pi Pico.

Video

Skema rangkaian

Simulator Lampu Lalu Lintas Raspberry Pi Pico (3 LED Berurutan) - Circuit

Kode sumber

MicroPython
1# ─────────────────────────────────────────
2#   BlueGrays · bluegrays.com
3#   Simulator Lampu Lalu Lintas Raspberry Pi Pico (3 LED Berurutan)
4# ─────────────────────────────────────────
5# Siklus lampu lalu lintas sungguhan dengan LED merah, kuning, dan hijau:
6# hijau 4 s, kuning 1.5 s, merah 3 s, lalu merah + kuning 1 s (awal gaya
7# Eropa). Fungsi helper yang mematikan semua LED menghindari kode
8# berulang.
9#
10# Pin:
11#   GP11 -> LED hijau
12#   GP12 -> LED kuning
13#   GP13 -> LED merah (tiap LED dengan 220 ohm)
14#   Katoda LED -> GND
15
16from machine import Pin
17from time import sleep
18
19# ============ PIN / PIN ============
20# Pin lampu lalu lintas (berdampingan GP11-GP12-GP13)
21green_led  = Pin(11, Pin.OUT)      # LED hijau: JALAN
22yellow_led = Pin(12, Pin.OUT)      # LED kuning: SIAP
23red_led    = Pin(13, Pin.OUT)      # LED merah: BERHENTI
24
25# ============ FUNGSI HELPER ============
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# ============ LOOP UTAMA ============
40while True:
41    # HIJAU: JALAN (4 s)
42    all_off()
43    green_led.value(1)
44    print("[TRAFIK/TRAFFIC] YESIL / GREEN — GEC / GO")
45    sleep(4)
46
47    # KUNING: SIAP (1.5 s)
48    all_off()
49    yellow_led.value(1)
50    print("[TRAFIK/TRAFFIC] SARI / YELLOW — HAZIRLAN / READY")
51    sleep(1.5)
52
53    # MERAH: BERHENTI (3 s)
54    all_off()
55    red_led.value(1)
56    print("[TRAFIK/TRAFFIC] KIRMIZI / RED — DUR / STOP")
57    sleep(3)
58
59    # MERAH + KUNING: MULAI (1 s), gaya Eropa
60    # Fase mulai: pengemudi memasukkan gigi mobil
61    yellow_led.value(1)
62    print("[TRAFIK/TRAFFIC] KIRMIZI+SARI / RED+YELLOW — KALKIS / STARTING")
63    sleep(1)
64

FAQ

Apa artinya jika lampu merah dan kuning menyala bersamaan?

Di sebagian lampu lalu lintas di Eropa, lampu merah dan kuning menyala bersama sebelum lampu berubah dari merah ke hijau; ini memberi tanda kepada pengemudi untuk "bersiap". Pola ini juga dipakai di Turki.

Apa manfaat mendefinisikan fungsi?

Fungsi seperti `all_off()` memungkinkanmu memanggil tiga baris kode yang berulang dengan satu nama. Kodenya jadi lebih pendek dan mudah dibaca, dan perubahan cukup dilakukan di satu tempat.

Bagaimana cara mengubah durasinya?

Ubah nilai detik di dalam `sleep()` untuk setiap lampu. Jika kamu mendefinisikan nilainya sebagai konstanta di awal file (mis. GREEN_TIME = 4) dan memakainya dalam pemanggilan seperti `sleep(GREEN_TIME)`, mengaturnya jadi jauh lebih mudah.

Bisakah aku menambahkan tombol penyeberang jalan?

Ya. Kamu bisa menambahkan tombol yang, ketika ditekan, mengubah siklus ke merah. Agar tombol langsung terdeteksi, kamu perlu memakai `ticks_ms()` untuk pengaturan waktu, bukan `sleep`; ini dijelaskan di proyek pemilih mode berikutnya.