# Importamos las librerías necesarias
import neopixel # Controla los LEDs NeoPixel (WS2812)
from machine import Pin # Permite manejar pines del microcontrolador
import utime # Librería para manejar tiempos y pausas
# === Configuración del pin y número de LEDs ===
NEOPIXEL_PIN = 15 # Pin GPIO donde está conectado el anillo NeoPixel
NUM_LEDS = 16 # Cantidad de LEDs en el anillo
# Inicializamos el objeto NeoPixel indicando el pin y la cantidad de LEDs
np = neopixel.NeoPixel(Pin(NEOPIXEL_PIN), NUM_LEDS)
# === Función para encender todos los LEDs de un mismo color ===
def encender_leds(color):
"""
Enciende todos los LEDs con el color especificado.
El color se da en formato (R, G, B) → Rojo, Verde, Azul (0 a 255).
"""
for i in range(NUM_LEDS): # Recorre cada LED del anillo
np[i] = color # Asigna el color al LED i
np.write() # Envía los datos a los LEDs para que se actualicen
# === Función de parpadeo ===
def efecto_parpadeo(color, repeticiones=5, delay=0.5):
"""
Hace que los LEDs parpadeen con el color especificado.
- color: tupla RGB (ejemplo: (255,0,0) para rojo)
- repeticiones: cuántas veces parpadeará
- delay: tiempo en segundos entre encendido y apagado
"""
for _ in range(repeticiones): # Se repite la cantidad indicada
encender_leds(color) # Enciende con el color dado
utime.sleep(delay) # Espera un tiempo
encender_leds((0, 0, 0)) # Apaga los LEDs (color negro)
utime.sleep(delay) # Espera antes de la siguiente repetición
# === Función de efecto arcoíris ===
def efecto_arcoiris():
"""
Muestra un efecto arcoíris giratorio.
Usa una lista de colores básicos y los reparte en los LEDs.
"""
# Lista de colores que se usarán en el efecto
colores = [
(255, 0, 0), # Rojo
(0, 255, 0), # Verde
(0, 0, 255), # Azul
(255, 255, 0), # Amarillo
(0, 255, 255), # Cian
(255, 0, 255) # Magenta
]
for _ in range(10): # Número de ciclos del efecto
for i in range(NUM_LEDS):
# Asigna a cada LED un color de la lista
# i % len(colores) asegura que no nos salgamos de la lista
np[i] = colores[i % len(colores)]
np.write() # Actualiza los LEDs
utime.sleep(0.2) # Pequeña pausa para ver el efecto
while True:
# === Programa principal ===
encender_leds((0, 255, 0)) # Enciende todos en verde
utime.sleep(1) # Espera 1 segundo
efecto_parpadeo((255, 0, 0), 3) # Hace parpadear en rojo 3 veces
efecto_arcoiris() # Ejecuta el efecto arcoíris