from machine import Pin, PWM
from time import sleep
led = PWM(Pin(2), freq=1000) # Initialize PWM on GPIO 2 at 1 kHz
button = Pin(18, Pin.IN, Pin.PULL_UP) # Button with internal pull-up resistor
# Track current duty cycle
current_duty_cycle = 0
while True:
# Increase brightness
for duty_cycle in range(current_duty_cycle, 1024, 10):
if button.value() == 0: # Check if button is pressed
break # Exit loop if button is pressed
led.duty(duty_cycle)
current_duty_cycle = duty_cycle # Update current duty cycle
sleep(0.01)
# Decrease brightness
for duty_cycle in range(current_duty_cycle, -1, -10):
if button.value() == 0: # Check if button is pressed
break # Exit loop if button is pressed
led.duty(duty_cycle)
current_duty_cycle = duty_cycle # Update current duty cycle
sleep(0.01)