Tabla de contenido:

Whack-a-moLED !!: 7 pasos
Whack-a-moLED !!: 7 pasos

Video: Whack-a-moLED !!: 7 pasos

Video: Whack-a-moLED !!: 7 pasos
Video: Whack-A-Mole | Cartoon-Box 22 2024, Noviembre
Anonim
Whack-a-moLED !!
Whack-a-moLED !!
Whack-a-moLED !!
Whack-a-moLED !!

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

Conecta el circuito
Conecta 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

Image
Image

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

¡Prototipo final de Whack-a-MoLED empaquetado para presentar a su ser querido!
¡Prototipo final de Whack-a-MoLED empaquetado para presentar a su ser querido!
¡Prototipo final de Whack-a-MoLED empaquetado para presentar a su ser querido!
¡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.

Recomendado: