from machine import Pin, PWM
import time
import random
led_pins = [13, 12, 14, 27, 26, 25, 33, 32, 15, 2, 0, 4, 16, 17, 5]
leds = [Pin(pin, Pin.OUT) for pin in led_pins]
button_pin = 22
button = Pin(button_pin, Pin.IN, Pin.PULL_UP)
pattern = 0
patterns_count = 7
last_change_time = 0
DEBOUNCE_DELAY = 300
def change_pattern(pin):
global pattern, last_change_time
current_time = time.ticks_ms()
if time.ticks_diff(current_time, last_change_time) > DEBOUNCE_DELAY:
pattern = (pattern + 1) % patterns_count
print(f"Pattern changed to: {pattern}")
turn_off_leds()
last_change_time = current_time
button.irq(trigger=Pin.IRQ_FALLING, handler=change_pattern)
def turn_off_leds():
for led in leds:
led.value(0)
def blink_leds():
for led in leds:
led.value(1)
time.sleep(1.5)
for led in leds:
led.value(0)
time.sleep(1.5)
def chase_leds():
for led in leds:
led.value(1)
time.sleep(0.1)
led.value(0)
def alternating_blink():
for i in range(len(leds)):
leds[i].value(i % 2)
time.sleep(0.35)
for i in range(len(leds)):
leds[i].value((i + 1) % 2)
time.sleep(0.35)
def all_on_off():
for led in leds:
led.value(1)
time.sleep(0.25)
for led in leds:
led.value(0)
time.sleep(0.25)
def random_blink():
led = random.choice(leds)
led.value(1)
time.sleep(0.3)
led.value(0)
def ripple_effect():
center = len(leds) // 2
for _ in range(3):
for i in range(center + 1):
if center - i >= 0:
leds[center - i].value(1)
if center + i < len(leds):
leds[center + i].value(1)
time.sleep(0.1)
for i in range(center + 1):
if center - i >= 0:
leds[center - i].value(0)
if center + i < len(leds):
leds[center + i].value(0)
time.sleep(0.1)
def run_pattern():
if pattern == 0:
turn_off_leds()
elif pattern == 1:
blink_leds()
elif pattern == 2:
chase_leds()
elif pattern == 3:
alternating_blink()
elif pattern == 4:
all_on_off()
elif pattern == 5:
random_blink()
elif pattern == 6:
ripple_effect()
try:
while True:
run_pattern()
time.sleep(0.05)
except KeyboardInterrupt:
turn_off_leds()
print("Program stopped")