Este proyecto propone crear un juego interactivo que desafía y entrena la memoria del jugador. Utilizando un keypad, el jugador tiene que recordar y reproducir secuencias de números o patrones generados de manera aleatoria. Cada ronda aumenta la dificultad, sumando complejidad a las secuencias para mantener la atención y estimular la capacidad de retención.
Además de ser entretenido, este juego es ideal para mejorar habilidades cognitivas, como la memoria a corto plazo y la concentración. Se puede adaptar a distintos niveles de dificultad, convirtiéndolo en una experiencia versátil y atractiva para todas las edades.
Materiales Necesarios
- Arduino UNO (u otro compatible)
- Keypad 4×4
- LEDs (para retroalimentación visual)
- Buzzer (para retroalimentación sonora)
- Resistencias
- Cables de conexión y protoboard
Keypad 4×4
Conectá las filas y columnas del keypad a los pines digitales del Arduino. Ejemplo de conexión:
- Keypad:
- Fila 1 -> Pin 9
- Fila 2 -> Pin 8
- Fila 3 -> Pin 7
- Fila 4 -> Pin 6
- Columna 1 -> Pin 5
- Columna 2 -> Pin 4
- Columna 3 -> Pin 3
- Columna 4 -> Pin 2
LEDs y Buzzer:
- LEDs: Conectar al pin digital 10.
- Buzzer: Conectar al pin digital 11.
2. Código Arduino
#include <Keypad.h>
// Configuración del Keypad 4×4
const byte FILAS = 4;
const byte COLUMNAS = 4;
char keys[FILAS][COLUMNAS] = {
{‘1′,’2′,’3′,’A’},
{‘4′,’5′,’6′,’B’},
{‘7′,’8′,’9′,’C’},
{‘*’,’0′,’#’,’D’}
};
byte pinesFilas[FILAS] = {9, 8, 7, 6}; // Pines de las filas
byte pinesColumnas[COLUMNAS] = {5, 4, 3, 2}; // Pines de las columnas
Keypad keypad = Keypad(makeKeymap(keys), pinesFilas, pinesColumnas, FILAS, COLUMNAS);
int ledPin = 10; // Pin del LED
int buzzerPin = 11; // Pin del Buzzer
int sequence[10]; // Secuencia generada por el juego
int playerInput[10]; // Secuencia ingresada por el jugador
int sequenceLength = 1; // Longitud de la secuencia (comienza en 1)
int step = 0; // Paso actual del juego
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600); // Para depuración
generateSequence(); // Genera la secuencia inicial
}
void loop() {
playSequence(); // Muestra la secuencia al jugador
getPlayerInput(); // Captura la secuencia ingresada por el jugador
checkSequence(); // Verifica si el jugador ha ingresado la secuencia correcta
}
void generateSequence() {
// Genera una secuencia aleatoria de números
for (int i = 0; i < 10; i++) {
sequence[i] = random(0, 10); // Genera números del 0 al 9
}
}
void playSequence() {
Serial.println(“Secuencia:”);
for (int i = 0; i < sequenceLength; i++) {
digitalWrite(ledPin, HIGH);
tone(buzzerPin, 1000, 200); // Buzzer emite sonido para cada número
delay(500);
digitalWrite(ledPin, LOW);
Serial.print(sequence[i]); // Muestra la secuencia en el monitor serial
delay(500);
}
Serial.println();
}
void getPlayerInput() {
Serial.println(“Ingresa la secuencia:”);
for (int i = 0; i < sequenceLength; i++) {
char key = keypad.getKey();
while (!key) { // Espera hasta que se presione una tecla
key = keypad.getKey();
}
playerInput[i] = key – ‘0‘; // Convierte el carácter a número
Serial.print(playerInput[i]); // Muestra el número ingresado en el monitor serial
}
Serial.println();
}
void checkSequence() {
for (int i = 0; i < sequenceLength; i++) {
if (playerInput[i] != sequence[i]) {
Serial.println(“Juego Terminado“);
sequenceLength = 1; // Reinicia el juego
return;
}
}
sequenceLength++; // Incrementa la secuencia si es correcta
delay(1000); // Espera antes de mostrar la siguiente secuencia
}
3. Explicación del Código
Configuración del Keypad: Definí una matriz 4×4 de caracteres y configurá los pines del Arduino a los que está conectado el keypad.
Generación de Secuencia: Generá una secuencia de números aleatorios que el jugador tiene que seguir.
Reproducción de la Secuencia: El sistema muestra la secuencia haciendo parpadear un LED y emitiendo sonido con el buzzer.
Entrada del Jugador: El jugador introduce la secuencia correcta presionando las teclas del keypad.
Verificación: Compará la secuencia ingresada con la generada; si es correcta, el juego continúa con una secuencia más larga.
4. Subir el Código al Arduino
Conectá tu Arduino a la computadora, seleccioná el puerto adecuado en el IDE de Arduino y cargá el código.
5. Pruebas y Ajustes
- Verificá que el keypad responda correctamente.
- Asegurate de que la secuencia se muestre bien con el LED y el buzzer.
- Ajustá el tiempo de espera entre secuencias según tu preferencia.
Encontrá en nuestra web todo lo que buscás para tus proyectos, desde componentes hasta kits completos. ¡Conseguí lo necesario para transformar tus ideas en realidad!
No te pierdas nuestras próximas notas, donde vamos a presentar otros proyectos Arduino innovadores. ¡Seguí nuestras publicaciones y descubrí nuevas ideas cada semana!
Hasta la próxima.
