from machine import Pin
import time
import random
# 1. Configuración de los pines de hardware
# LED en el pin GP15 como salida
led = Pin(15, Pin.OUT)
# Botón en el pin GP14 como entrada con resistencia PULL-DOWN interna
# (Al presionar el botón lee 1/True, sin presionar lee 0/False)
boton = Pin(14, Pin.IN, Pin.PULL_DOWN)
print("--- ¡INICIO DEL JUEGO DE REFLEJOS! ---")
print("El LED se encenderá de forma aleatoria.")
print("Presiona el botón tan rápido como puedas cuando se encienda.\n")
# Espera inicial para asegurarse de que todo esté listo
time.sleep(1)
while True:
# Asegurar que el LED empiece apagado
led.off()
# Generar un tiempo de espera aleatorio entre 2 y 5 segundos
tiempo_espera = random.uniform(2.0, 5.0)
time.sleep(tiempo_espera)
# ¡Encender el LED para iniciar la prueba de reflejos!
led.on()
print("¡¡¡AHORA!!! Presiona el botón...")
# Tomar el tiempo de inicio exacto en milisegundos
inicio = time.ticks_ms()
# Esperar activamente a que el usuario presione el botón (value() == 1)
while boton.value() == 0:
time.sleep(0.001) # Pausa mínima de 1ms para optimizar CPU
# Calcular el tiempo transcurrido (reacción)
fin = time.ticks_ms()
tiempo_reaccion = time.ticks_diff(fin, inicio)
# Apagar el LED inmediatamente tras la pulsación
led.off()
# Mostrar el resultado
print(f"-> ¡Excelente! Tu tiempo de reacción fue de {tiempo_reaccion} ms.")
print("Preparando la siguiente ronda...\n")
# Pausa de 3 segundos entre rondas
time.sleep(3)