from machine import Pin
from time import sleep_ms
led_pins = [0,1,2,3,4,5,6,7]
leds = [Pin(pin, Pin.OUT) for pin in led_pins]
stop_button = Pin(20, Pin.IN, Pin.PULL_UP)
current_led = 0
delay = 50
# Inline clear LEDs code (no def)
leds[0].value(0)
leds[1].value(0)
leds[2].value(0)
leds[3].value(0)
leds[4].value(0)
leds[5].value(0)
leds[6].value(0)
leds[7].value(0)
spinning = True
while spinning:
# Clear LEDs
leds[0].value(0)
leds[1].value(0)
leds[2].value(0)
leds[3].value(0)
leds[4].value(0)
leds[5].value(0)
leds[6].value(0)
leds[7].value(0)
# Light current LED
if current_led == 0:
leds[0].value(1)
if current_led == 1:
leds[1].value(1)
if current_led == 2:
leds[2].value(1)
if current_led == 3:
leds[3].value(1)
if current_led == 4:
leds[4].value(1)
if current_led == 5:
leds[5].value(1)
if current_led == 6:
leds[6].value(1)
if current_led == 7:
leds[7].value(1)
sleep_ms(delay)
current_led = current_led + 1
if current_led > 7:
current_led = 0
if not stop_button.value(): # pressed (active low)
spinning = False
# Slow down and stop
steps = 0
while steps < 20:
# Clear LEDs
leds[0].value(0)
leds[1].value(0)
leds[2].value(0)
leds[3].value(0)
leds[4].value(0)
leds[5].value(0)
leds[6].value(0)
leds[7].value(0)
# Light current LED
if current_led == 0:
leds[0].value(1)
if current_led == 1:
leds[1].value(1)
if current_led == 2:
leds[2].value(1)
if current_led == 3:
leds[3].value(1)
if current_led == 4:
leds[4].value(1)
if current_led == 5:
leds[5].value(1)
if current_led == 6:
leds[6].value(1)
if current_led == 7:
leds[7].value(1)
sleep_ms(delay)
current_led = current_led + 1
if current_led > 7:
current_led = 0
delay = delay + 20
steps = steps + 1
# Final stop - keep the last LED lit
leds[0].value(0)
leds[1].value(0)
leds[2].value(0)
leds[3].value(0)
leds[4].value(0)
leds[5].value(0)
leds[6].value(0)
leds[7].value(0)
if current_led == 0:
leds[0].value(1)
if current_led == 1:
leds[1].value(1)
if current_led == 2:
leds[2].value(1)
if current_led == 3:
leds[3].value(1)
if current_led == 4:
leds[4].value(1)
if current_led == 5:
leds[5].value(1)
if current_led == 6:
leds[6].value(1)
if current_led == 7:
leds[7].value(1)