"""MicroPython RP2 / Raspberry Pi Pico (RP2040). Hardware run NOT_EVALUATED. Copy this file + lighting_control.py to Pico after verifying wiring unpowered. GP15 to momentary switch to GND. GPIO never powers LED loads directly. """ from machine import Pin,PWM from time import ticks_ms,ticks_diff,sleep_ms from lighting_control import PINS,duty_u16,levels,DebouncedPress pwms=[] for gpio in PINS: pin=Pin(gpio,Pin.OUT,value=0) pwms.append(PWM(pin,freq=2000,duty_u16=0)) button=Pin(15,Pin.IN,Pin.PULL_UP) previous=ticks_ms();debounce=DebouncedPress(previous);mode=0 phase_ms=0;ramp_ms=0 try: while True: now=ticks_ms();dt=max(0,ticks_diff(now,previous));previous=now phase_ms=(phase_ms+dt)%10000;ramp_ms=min(1200,ramp_ms+dt) elapsed=phase_ms/1000 if debounce.update(button.value(),now,ticks_diff):mode=(mode+1)%4 ramp=ramp_ms/1200 for pwm,percent in zip(pwms,levels(mode,elapsed)): pwm.duty_u16(duty_u16(percent*ramp)) sleep_ms(10) finally: for pwm in pwms: pwm.duty_u16(0);pwm.deinit() for gpio in PINS:Pin(gpio,Pin.OUT,value=0)