Tabla de contenido:
- Suministros
- Paso 1: conecte el circuito
- Paso 2: Código para la configuración de pines
- Paso 3: Código para detección de joystick
- Paso 4: Código de rutina del bucle principal
- Paso 5: ¡Listo para probar
- Paso 6: Implementación de Arduino Nano para prototipo
- Paso 7: ¡Prototipo final de Whack-a-MoLED empaquetado para presentar a su ser querido
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
Proyectos Tinkercad »
Esta es una versión LED del clásico juego Whack-a-Mole.
Básicamente, se enciende un LED aleatorio de 4 LED en lugar de un lunar que mira por un agujero y el jugador apaga el LED con un joystick en lugar de golpear el lunar.
Suministros
Arduino Uno / Nano o cualquier placa variante
4 LED y resistencias limitadoras de corriente correspondientes.
Módulo de joystick con salidas X, Y
Zumbador activo (opcional)
Cables de puente … ¡suficiente para depurar!
Paso 1: conecte el circuito
Conecte la placa Arduino Uno al módulo del joystick, conectando 2 pines de entrada analógica a las salidas X Y del joystick.
4 LED para conectar mediante resistencias a 4 pines de salida digital o analógica.
Zumbador activo para conectarse a un pin de salida digital
Paso 2: Código para la configuración de pines
int xVal = 0, yVal = 0, butVal = 0, xPin = A0, yPin = A1, joyPin = 13, butPin = 7, speakerPin = 9;
int leftLED = A2, rightLED = A3, topLED = A4, bottomLED = A5;
int selectedLED = 0; // Puede ser uno de A2, A3, A4 o A5
configuración vacía () {
pinMode (xPin, ENTRADA);
pinMode (yPin, ENTRADA);
pinMode (leftLED, OUTPUT);
pinMode (rightLED, SALIDA);
pinMode (topLED, SALIDA); pinMode (LED inferior, SALIDA);
pinMode (joyPin, SALIDA);
pinMode (buzzerPin, SALIDA);
}
Paso 3: Código para detección de joystick
anular joystickSenseRoutine ()
{
xVal = analogRead (xPin); yVal = analogRead (yPin); butVal = digitalRead (butPin);
joyPin = mapXYtoPin (xVal, yVal, butVal);
analogWrite (LED seleccionado, 1024);
if (selectedLED! = leftLED) {analogWrite (leftLED, 0); } if (selectedLED! = rightLED) {analogWrite (rightLED, 0); }
if (selectedLED! = topLED) {analogWrite (topLED, 0); }
if (selectedLED! = bottomLED) {analogWrite (bottomLED, 0); }
if (joyPin == selectedLED) // Mole Whacked
{
analogWrite (LED seleccionado, 0);
//
// ¡Agrega código para reproducir música / tono para golpear a MoLED!
//
}
}
int mapXYtoPin (int xVal, int yVal, int butVal) {if ((xVal <100) y (yVal 400)) {return bottomLED; }
else if ((xVal> 900) y (yVal 400)) {return topLED; }
else if ((xVal 400) y (yVal <100)) {return leftLED; }
else if ((xVal 400) y (yVal> 900)) {return rightLED; }
else {return -1; }
}
Paso 4: Código de rutina del bucle principal
bucle vacío () {
para (int i = 0; i <longitud; i ++)
{
if (random (0, 100)> 90) {selectedLED = anaPinMap (random (2, 6));}
// Agrega código para la música del juego aquí
// *** *** ***
//
}
int anaPinMap (int randNum) {
if (randNum == 2) {return A2; }
else if (randNum == 3) {return A3; }
else if (randNum == 4) {return A4; }
else if (randNum == 5) {return A5; }
}
Paso 5: ¡Listo para probar
Paso 6: Implementación de Arduino Nano para prototipo
La misma implementación se hizo con Arduino nano en la placa de pruebas, placa personalizada con LED, resistencias y zumbador, e interruptor de joystick X-Y.
Paso 7: ¡Prototipo final de Whack-a-MoLED empaquetado para presentar a su ser querido
Suministros para prototipo:
Caja de cartón simple (Mínimo 4cmX6cmX3cm), piezas de cartón extra para soporte.
Papel decorativo para cubrir chasis (opcional)
Adhesivo / pegamento multiusos
Mini protoboard (opcional)
Arduino nano
Pequeño PCB universal
Batería de 9V para alimentar Arduino nano (conectar al pin Vin).
Interruptor SPDT
Resto de suministros (LED, resistencias, joystick, zumbador, cables) como se describe en el paso 1 anterior.