from machine import Pin
from neopixel import NeoPixel
import time
# Configuración de pines y variables
NUM_LED = 16 # Número de LEDs en la tira
NEO_PIXEL_PIN = 4 # Pin donde está conectado el NeoPixel en el ESP32
BOTON_PIN = 5 # Pin donde está conectado el Botón en el ESP32
LED_DIANA = 8 # Posición objetivo para atrapar la luz
# Definimos el NeoPixel y el botón
np = NeoPixel(Pin(NEO_PIXEL_PIN), NUM_LED)
bt = Pin(BOTON_PIN, Pin.IN, Pin.PULL_UP)
# Función para apagar todos los LEDs
def Apaga_Leds():
for i in range(NUM_LED):
np[i] = (0, 0, 0)
# También podríamos hacerlo en una única línea con: np.fill(0,0,0)
np.write()
# Variables del juego
pos_led_actual = 0
direccion = 1 # 1 para derecha, -1 para izquierda
# Mensaje inicial para el usuario
print("¡Juego de Atrapa la Luz! Presiona el botón cuando la luz esté en la posición objetivo(color amarillo).")
np[8] = (255, 255, 0) # Color azul para la luz en movimiento
np.write()
resp=input("¿empezamos?")
while True:
# Mueve la luz en el NeoPixel
Apaga_Leds()
np[pos_led_actual] = (0, 0, 255) # Color azul para la luz en movimiento
np.write()
# Verifica si el botón es presionado
if bt.value() == 0:
if pos_led_actual == LED_DIANA:
print("¡Acertaste!")
np[LED_DIANA] = (0, 255, 0) # Cambia a verde para el acierto
np.write()
time.sleep(0.05)
else:
print("Fallaste. Inténtalo de nuevo.")
np[pos_led_actual] = (255, 0, 0) # Rojo para fallo
np.write()
time.sleep(0.05)
# Actualiza la posición de la luz en la tira
pos_led_actual += direccion
# Cambia de dirección si llega a los extremos de la tira
if pos_led_actual == (NUM_LED - 1) or (pos_led_actual == 0):
direccion *= -1
# Control de la velocidad de movimiento de la luz
time.sleep(0.2) # Ajustar para cambiar la velocidad del juego