from machine import Pin, PWM
import time
# ----------------------------
# HARDWARE SETUP (WOKWI PICO)
# ----------------------------
# Onboard LED (GPIO 25)
onboard_led = Pin(25, Pin.OUT)
# External LED using PWM (connected to GP15 in Wokwi)
pwm_led = PWM(Pin(15))
pwm_led.freq(1000)
# Button (connected to GP14, uses pull-up)
button = Pin(14, Pin.IN, Pin.PULL_UP)
# ----------------------------
# STATE VARIABLES
# ----------------------------
mode = 0
last_button_state = 1
brightness = 0
direction = 1
print("Wokwi MicroPython Pico Demo Started")
# ----------------------------
# MAIN LOOP
# ----------------------------
while True:
# ------------------------
# BUTTON EDGE DETECTION
# ------------------------
current_button_state = button.value()
if last_button_state == 1 and current_button_state == 0:
mode = 1 - mode
print("Mode changed to:", mode)
time.sleep(0.2) # debounce
last_button_state = current_button_state
# ------------------------
# MODE 0: PWM FADE
# ------------------------
if mode == 0:
brightness += direction * 2000
if brightness >= 65535:
brightness = 65535
direction = -1
elif brightness <= 0:
brightness = 0
direction = 1
pwm_led.duty_u16(brightness)
onboard_led.value(1)
# ------------------------
# MODE 1: BLINK
# ------------------------
else:
pwm_led.duty_u16(0)
onboard_led.toggle()
time.sleep(0.3)
# ------------------------
# DEBUG OUTPUT
# ------------------------
print("Mode:", mode,
"Button:", button.value(),
"Brightness:", brightness)
time.sleep(0.05)