from machine import Pin
import time
# Konfigurasi Pin
led_pin = Pin(15, Pin.OUT) # Pin GPIO15 untuk LED sebagai output
button_pin = Pin(16, Pin.IN, Pin.PULL_UP) # Pin GPIO16 untuk Push Button sebagai input dengan pull-up internal
# Variabel untuk melacak status LED
led_status = False # LED awalnya mati
def toggle_led(pin):
global led_status
# Waktu debouncing sederhana
time.sleep_ms(50)
if button_pin.value() == 0: # Periksa apakah tombol masih ditekan (karena pull-up, 0 berarti ditekan)
led_status = not led_status # Balikkan status LED
led_pin.value(led_status) # Set nilai pin LED sesuai status
print(f"LED is {'ON' if led_status else 'OFF'}")
while button_pin.value() == 0: # Tunggu sampai tombol dilepas
time.sleep_ms(10)
# Atur interrupt untuk button_pin
# Ketika pin button berubah dari HIGH ke LOW (tombol ditekan)
button_pin.irq(trigger=Pin.IRQ_FALLING, handler=toggle_led)
print("Sistem siap. Tekan tombol untuk menyalakan/mematikan LED.")
# Loop utama (tidak melakukan apa-apa karena menggunakan interrupt)
while True:
time.sleep(1) # Tunggu sebentar agar CPU tidak terlalu sibuk