# Efectos de animación en una tira de LEDs simples
# ===[MÓDULOS]===
from machine import Pin
import utime
# ===[RECURSOS]===
LEDs = [16, 17, 18, 19, 21, 22, 23, 25, 26, 27] # Terminales que usarán los LEDs
# Creación de los LEDs
led_pins = []
for x in range(10):
led_pins.append(Pin(LEDs[x], Pin.OUT)) # Creación de objetos (LEDs)
button_fast = Pin(12, Pin.IN, Pin.PULL_DOWN) # Creación del interruptor de aumento de velocidad
button_slow = Pin(14, Pin.IN, Pin.PULL_DOWN) # Creación del interruptor de disminución de velocidad
delay = 0.1 # Retardo inicial para la animación
# === Inician las Funciones ===
# Revisión para verificar si se oprimió alguno de los botones
def check_delay():
global delay
if button_fast.value(): # Si se presiona el botón de aumento de velocidad
delay = max(0.01, delay - 0.01) # Disminuye el retardo
utime.sleep(0.2)
if button_slow.value(): # Si se presiona el botón de disminución de velocidad
delay += 0.01 # Aumenta el retardo
utime.sleep(0.2)
utime.sleep(delay) # Espera el tiempo ajustado
# === Efectos de animación ===
def efecto_centro_fuera():
for i in range(len(led_pins)//2):
led_pins[4 - i].value(1)
led_pins[5 + i].value(1)
check_delay()
led_pins[4 - i].value(0)
led_pins[5 + i].value(0)
check_delay()
def efecto_fuera_centro():
for i in reversed(range(len(led_pins)//2)):
led_pins[4 - i].value(1)
led_pins[5 + i].value(1)
check_delay()
led_pins[4 - i].value(0)
led_pins[5 + i].value(0)
check_delay()
def parpadeo_alternado():
for _ in range(5):
for led in led_pins[::2]: # LEDs en posiciones impares
led.value(1)
check_delay()
for led in led_pins[::2]:
led.value(0)
for led in led_pins[1::2]: # LEDs en posiciones pares
led.value(1)
check_delay()
for led in led_pins[1::2]:
led.value(0)
# === Bucle principal ===
while True:
# Efecto de DERECHA a IZQUIERDA
for x in range(len(led_pins) - 2):
led_pins[x + 1].value(1)
check_delay()
led_pins[x].value(1)
check_delay()
led_pins[x + 1].value(0)
check_delay()
led_pins[x + 2].value(1)
check_delay()
led_pins[x].value(0)
check_delay()
led_pins[x + 2].value(0)
# Efecto de IZQUIERDA a DERECHA
for x in reversed(range(len(led_pins) - 2)):
led_pins[x + 1].value(1)
check_delay()
led_pins[x].value(1)
check_delay()
led_pins[x + 1].value(0)
check_delay()
led_pins[x + 2].value(1)
check_delay()
led_pins[x].value(0)
check_delay()
led_pins[x + 2].value(0)
# Efecto del CENTRO hacia AFUERA
efecto_centro_fuera()
# Efecto de AFUERA hacia el CENTRO
efecto_fuera_centro()
# Efecto de PARPADEO ALTERNADO
parpadeo_alternado()