LED Toggle dengan Tombol Raspberry Pi Pico
Tombol + LED, level berikutnya! Berbeda dengan proyek tombol dasar, tombol tidak perlu ditahan. Tekan dan lepas → LED menyala. Tekan dan lepas lagi → LED mati (toggle). Rangkaiannya sama (LED GP14, Tombol GP2), tetapi kodenya sangat berbeda. Pelajari deteksi tepi (menangkap momen turun 1→0), pelacakan status, dan debounce (penyaring pantulan mekanis). led.toggle() MicroPython menukar status dalam satu baris. Dasar semua proyek tombol interaktif (pengganti mode, IRQ, klik ganda).

Video
Skema rangkaian

Kode sumber
1# ─────────────────────────────────────────
2# BlueGrays · bluegrays.com
3# LED Toggle dengan Tombol Raspberry Pi Pico
4# ─────────────────────────────────────────
5# Setiap penekanan tombol membalik status LED (mode toggle): tekan untuk
6# nyala, tekan lagi untuk mati. Kode menunggu tombol dilepas, dan debounce
7# 50 ms mencegah pemicuan palsu.
8#
9# Pin:
10# GP14 -> LED merah (dengan resistor 220 ohm)
11# GP2 -> Tombol (kaki lainnya ke GND)
12
13from machine import Pin
14from time import sleep_ms
15
16led = Pin(14, Pin.OUT)
17button = Pin(2, Pin.IN, Pin.PULL_UP) # PULL_UP: ditekan = 0
18
19while True:
20 # Tunggu tombol ditekan
21 while button.value() == 1:
22 sleep_ms(10)
23
24 # Ditekan: balik status LED
25 led.toggle()
26 sleep_ms(50) # Lewati pantulan tekan
27
28 # Tunggu tombol dilepas
29 while button.value() == 0:
30 sleep_ms(10)
31
32 # Tunggu setelah pantulan (debounce)
33 sleep_ms(50)
34
FAQ
Apa itu deteksi tepi?
Alih-alih memeriksa apakah tombol sedang ditahan, kamu mencari momen ketika statusnya berubah. Dengan pull-up, momen pin turun dari 1 ke 0 dihitung sebagai satu tekanan, jadi menahan tombol tidak membuat toggle berulang-ulang.
Berapa sebaiknya waktu debounce?
Kode yang sekarang menunggu dengan sleep_ms(50) setelah mendeteksi bahwa tombol dilepas; kode ini tidak mengukur waktu sejak tekanan sah terakhir. Debounce yang lebih andal butuh pemeriksaan bahwa input tetap stabil selama periode tertentu.
Kenapa status LED tidak selalu berubah dengan benar?
Tanpa debounce, satu tekanan bisa terhitung beberapa kali dan LED berbalik dua kali, sehingga kembali ke kondisi awal. Pastikan kamu menyimpan status sebelumnya dengan benar dan waktu tunggunya cukup lama.
Apakah led.toggle() dan led.value(not led.value()) sama?
Ya, keduanya membalik status LED. toggle() hanya lebih pendek dan lebih mudah dibaca.
