Luz LED Whack-a-mole
Componentes y suministros
![]() |
| × | 1 | |||
| × | 7 | ||||
![]() |
| × | 7 | |||
| × | 1 | ||||
![]() |
| × | 8 | |||
![]() |
| × | 4 |
Acerca de este proyecto
Este fue mi primer proyecto Arduino, lo construí basándome en lo que aprendí en los primeros tutoriales sobre LED y controles básicos.
Este juego de "Whack-a-mole" utiliza 7 LED y un joystick. Hay 4 "topos", representados por las luces 2, 3, 4 y 5 de la izquierda en mi tablero. Una de las cuatro luces se iluminará aleatoriamente y le dará una cantidad determinada de tiempo para presionar la dirección correspondiente en el joystick. He dispuesto mis luces de modo que, de izquierda a derecha, las selecciones del joystick sean:izquierda, arriba, abajo, derecha. Esta es solo la convención que elegí, ¡tan creativa y prueba otras!
Las dos luces de la izquierda son rojas y verdes, lo que indica una elección incorrecta o correcta. La luz amarilla en el extremo derecho parpadea el recuento de la puntuación más alta actual e indica la puntuación cada vez que finaliza una carrera (siempre que se haga una elección incorrecta). Naturalmente, un nuevo puntaje alto reemplaza al anterior.
Quizás la parte más complicada de este proyecto es el joystick analógico. Para ambas direcciones del joystick, hay valores máximos de 0 y 1024 (para el mío, tuve que usar 1023, así que si no obtiene las selecciones correctas, puede intentarlo). Creo que estos valores también se pueden medir utilizando una ventana en serie. Simplifiqué estos valores de entrada usando declaraciones de cambio para las entradas x e y. No estoy seguro de si esta es la mejor manera de hacerlo, pero debido a que solo necesitaba los valores máximos de cada dirección (es decir, solo 4 opciones, 4 moles de LED), asigné valores enteros a cada posibilidad:1, 2, 3, 4 correspondiente a Izquierda, Derecha, Arriba, Abajo.

Los niveles de dificultad que he escrito en mi código como constantes, son el tiempo en milisegundos que la persona tiene para hacer una selección. Puede jugar con estos tiempos para cambiar la dificultad según sus preferencias. Pensé en integrar una opción usando botones o tal vez el joystick al comienzo de un turno, pero realmente no valió la pena el trabajo, ya que creo que sería bastante complicado y no realmente fácil de usar.
Por supuesto, hágame saber qué modificaciones y mejoras se pueden hacer. :)
Código
- WhackALED
WhackALED Arduino
// Golpea un LED // Variables del joystickint sX =A0; // joystick eje x, entrada analógicaint sY =A1; // eje y del joystick, entrada analógicaint sSX; // estado de x, leyendo de sXint sSY; // estado de y, leyendo de sYint sS; // estado convertido (puede que no sea el más eficiente) // Variables del juegoint rNum; // random int eligiendo la luz aleatoria para encenderint wins =0; // contando victorias consecutivas highScore =0; // guardar la puntuación más alta de victorias consecutivas // Constantes de dificultad, tiempo para reaccionarconst int easy =1000; const int medium =500; const int hard =325; const int stupid =250; int ledPins [] ={5,2, 4,3,6,7,8}; // inicializando led'sint pinCount =7; // número de configuración led pinsvoid () {Serial.begin (9600); pinMode (sX, INPUT); pinMode (sY, INPUT); for (int thisPin =0; thisPinhighScore) {// si las victorias consecutivas son más que la puntuación más alta anterior, se establece la nueva puntuación más alta. highScore =gana; gana =0; } for (int i =0; i <=3; i ++) {// luz roja parpadeante que indica una elección incorrecta digitalWrite (ledPins [5], HIGH); retraso (50); digitalWrite (ledPins [5], BAJO); retraso (50); } for (int w =0; w Esquemas
Todo debe coincidir con la imagen real del proyecto, excepto el joystick. Mi joystick tiene 5 pines, 4 o los que he usado:nombrados de arriba a abajo "GND", "+ 5V", "VRx" y "VRy". "GND" y "+ 5V" están conectados a GND y 5V en el arduino, "VRx" y "VRy" están conectados a A0 y A1.Todo debe coincidir con la imagen real del proyecto, excepto el joystick. Mi joystick tiene 5 pines, 4 o los que he usado:nombrados de arriba a abajo "GND", "+ 5V", "VRx" y "VRy". "GND" y "+ 5V" están conectados a GND y 5V en el arduino, "VRx" y "VRy" están conectados a A0 y A1. whack_a_mole_schematic_CBciL9GiCP.fzz
![]()
Proceso de manufactura