import board
import pulseio
import adafruit_irremote
import neopixel
import time
# --- CONFIGURACIÓN DE HARDWARE ---
# Pin GP28 para los datos de la matriz (cable verde en tu imagen)
pixel = neopixel.NeoPixel(board.GP16, 64, brightness=0.3, auto_write=True)
# Configurar el receptor IR en GP12
pulsein = pulseio.PulseIn(board.GP12, maxlen=120, idle_state=True)
decoder = adafruit_irremote.GenericDecode()
# --- FUNCIONES DE COLOR ---
def mostrar_color(color):
"""Llena toda la matriz con un color específico"""
pixel.fill(color)
# --- BUCLE PRINCIPAL ---
print("Sistema listo. 1:Rojo, 2:Verde, 3:Azul...")
while True:
pulses = decoder.read_pulses(pulsein)
try:
code = decoder.decode_bits(pulses)
if len(code) >= 3:
cmd = code[2]
print(f"Botón presionado: {cmd}")
# 1. Colores Primarios (Basado en tus lecturas de consola)
if cmd == 22: # Botón 1
mostrar_color((255, 0, 0)) # Rojo
elif cmd == 12: # Botón 2
mostrar_color((0, 255, 0)) # Verde
elif cmd == 24: # Botón 3
mostrar_color((0, 0, 255)) # Azul
# 2. Combinaciones (Botones 4, 5, 6...)
elif cmd == 94: # Botón 4 (Rojo + Verde = Amarillo)
mostrar_color((255, 255, 0))
elif cmd == 8: # Botón 5 (Rojo + Azul = Magenta)
mostrar_color((255, 0, 255))
elif cmd == 28: # Botón 6 (Verde + Azul = Cian)
mostrar_color((0, 255, 255))
# 3. Final (Botones 7 u 8)
elif cmd == 9 or cmd == 66:
mostrar_color((255, 255, 255)) # Blanco total
except Exception:
pass
pulsein.clear()