CONTENIDO ►
El juego de mesa Reaction es un sencillo proyecto de Arduino en el que sólo necesitas LEDs, resistencias para los botones y una protoboard. En este artículo hemos colocado un esquema del montaje del juego y un programa de trabajo con comentarios detallados. En los ajustes se puede cambiar el modo de funcionamiento: cambiar los intervalos de tiempo, el número de intentos y el número de botones (pulsador Arduino).
Para esta actividad necesitaremos:
- Arduino Uno / Arduino Nano
- LED y resistencia de 220 Ohm;
- pulsador;
- placa de pruebas;
- cables de conexion.
Proyecto de juego de reacción Arduino
El principio del juego es bastante sencillo: después de encender los LED (se encienden aleatoriamente), hay que pulsar el botón correspondiente lo más rápidamente posible. El intervalo de tiempo para que el LED se encienda y otros parámetros se pueden cambiar en el boceto. Después de todos los intentos, el número de intentos correctos, el tiempo medio de respuesta y el mejor tiempo de respuesta se muestran en el puerto serie de Arduino IDE.
Montaje de un juego de reflejos (reacción)

El diagrama muestra la conexión de tres pares de LEDs y botones (pulsador), pero puedes conectar hasta cinco pares cambiando los parámetros correspondientes en el boceto. Importante: Conecte los LEDs en serie desde el pin 4 y los botones desde el pin A0 al A5 Arduino Uno / Nano. El juego se inicia cuando se encienden todos los LEDs. Si lo deseas, puedes conectar un zumbador Arduino, para obtener una señal sonora de inicio del juego.
Programa Arduino para el juego de reacción
/* parámetros que se pueden modificar */ int d1 = 1000; // d1 y d2 - rango en millas de segundos para que los LEDs se enciendan int d2 = 2000; int d3 = 3000; // después de cuántos de segundos se borrará el error byte tarrgr = 5; // número de intentos byte knp = 3; // número de pares de LEDs / pulsador /* parámetros que se pueden modificar */ byte pinD = 4 + knp; byte pinA = 14 + knp; byte ext = 9; byte hit; byte err; byte tarrgn; boolean finich = true; unsigned long timing; unsigned long setreakt; unsigned long bestreakt = 99999; unsigned long medreakt; void setup() { Serial.begin(9600); for (byte i = 4; i < pinD; i++) { pinMode(i, OUTPUT); digitalWrite(i, HIGH); } delay(500); for (byte i = 4; i < pinD; i++) { digitalWrite(i, LOW); } for (byte i = 14; i < pinA; i++) { pinMode(i, INPUT); } for (byte i = 14; i < pinA; i++) { analogWrite(i, LOW); } } void loop() { while (tarrgn < tarrgr) { int LED = random(4, 4 + knp); int BTN = LED + 10; int DEL = random(d1, d2); delay(DEL); digitalWrite(LED, HIGH); timing = millis(); ext = 9; while (ext < 10 && tarrgn < tarrgr) { if (digitalRead(BTN) == HIGH) { digitalWrite(LED, LOW); setreakt = millis() - timing; delay(300); hit++; tarrgn++; ext = 11; } if (millis() - timing > d3) { digitalWrite(LED, LOW); delay(300); setreakt = 0; err++; tarrgn++; ext = 11; } } if (setreakt < bestreakt && setreakt > 100) { bestreakt = setreakt; } medreakt = medreakt + setreakt; } if (tarrgn == tarrgr && finich == true) { medreakt = medreakt / hit; if (medreakt > 99998) { medreakt = 0; } if (bestreakt > 99998) { bestreakt = 0; } Serial.println(); Serial.println("--- End of Raund ---"); Serial.println(); Serial.println("Coups - " + String(hit)); Serial.println("Erreurs - " + String(err)); Serial.println("La meilleure reaction - " + String(bestreakt)); Serial.println("Le moyenne reaction - " + String(medreakt)); Serial.println(); Serial.println("Please reboot for restart"); finich = false; } }
Explicación del código del juego de reacción:
- todos los parámetros se pueden cambiar al principio del programa;
- el orden incorrecto de conexión de los LEDs y los botones afectará al funcionamiento del programa. No es posible conectar más de cinco pares de LEDs y botones.
Conclusión. Es posible conectar el LCD 1602 i2c Arduino a la placa y mostrar los resultados ya en la pantalla. Además, es posible crear diferentes variantes de LEDs de conmutación, por ejemplo para encender dos LEDs al mismo tiempo. Si tienes alguna duda, puedes dejarla en los comentarios de este post – siempre intentamos resolver los problemas y responder a todos los comentarios de los usuarios.

Deja una respuesta