Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Crea un juego de memoria Arduino

Componentes y suministros

Arduino UNO
× 1
resistencias SparkFun de 330 ohmios
solo necesitamos 4 de ellos
× 1
resistencias SparkFun de 10k ohmios
solo necesitamos 4 de ellos
× 1
LED surtidos SparkFun
necesitamos 4 LED de diferentes colores
× 1
Mini altavoz SparkFun
Puedes prescindir de esto si no te importa el sonido
× 1
SparkFun BreadBoard (tamaño completo)
× 1
Cables de puente (genéricos)
× 1

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

¿Te acuerdas del juego "Simon"? Mucha gente de mi edad (nacida en los 70) perdió mucho tiempo jugando. El juego era simple, tenía 4 botones de diferentes colores que se iluminaban en secuencia y había que repetir la secuencia. Cada vez que lo hacías bien, el juego te volvería a dar la secuencia con un color adicional al final.

Obtuve uno para Navidad hace mucho tiempo, pero luego me mudé y me mudé, y moví un poco más para que el juego se perdiera en una de las muchas cajas que nunca se desempaqueta de un movimiento a otro ...

Como un "adulto", descubrí las alegrías de Arduino y con eso, tuve la oportunidad de revivir a mi amigo perdido tiempo perdido.

Este tutorial le mostrará cómo hacer un juego similar usando un Arduino Uno, algunos LED y resistencias y un circuito relativamente simple.

El programa en sí puede ser un poco complicado para un principiante, así que traté de explicar en el código qué hace y cómo.

La forma más sencilla de hacer que este juego funcione es esta.

1) Conecte el circuito exactamente como se muestra en el diagrama. El color de los cables no es relevante, así que si te quedas sin cables negros, está bien. :)

2) Pegue el código fuente en su editor Arduino favorito y cárguelo en la placa

3) Juega el juego

El juego comienza después de unos 3 segundos con 5 destellos lentos de todos los LED.

Si uno o más LED no parpadean, verifique el cableado. En mi tablero, los botones muy pequeños no siempre se asientan correctamente y tienden a salirse solos.

Si el cableado parece correcto, intente invertir un LED que funcione con uno que no funcione para ver si es el cableado o el LED mismo.

Después de que se completen los 5 destellos, se encenderá un LED. No puedo decirte cuál, es una sorpresa :) Presiona el botón de ese LED. Este LED se volverá a encender seguido de uno nuevo. Presione los botones correctos en secuencia ... Verá a dónde voy con eso ...

Luego, bastante pronto, verá que todos parpadean rápidamente. Eso significa que perdiste. :D

Se reproducirá la última secuencia que te dieron para que puedas contar tus puntos, seguidos de los 5 parpadeos lentos de antes, lo que indica que el juego está comenzando de nuevo.

Tiene 2 segundos para presionar cada botón.

¡Ahí tienes! ¡Diviértete!

¿Quieres hacerlo un poco más difícil? ¿Por qué no cambiar la línea superior del código a un valor diferente?

  #define PLAYER_WAIT_TIME 2000  

O puede agregar otro LED, si tiene uno ... Para esto, primero necesita reproducir esta parte del circuito:

El cable naranja aquí irá a cualquier pin no utilizado en su Arduino (aunque evite 0 y 1)

Luego modifique las siguientes líneas en el código:

  byte noPins =pines de 4 bytes [] ={2, 13, 10, 8};  

si agregaste un LED en el pin 6, el código se convertiría en

  byte noPins =pines de 5 bytes [] ={2, 13, 10, 8, 6};  

Un pequeño consejo para escribir código Arduino:

  void setup () {delay (3000); Serial.begin (9600); Reiniciar(); }  

Ponga un pequeño retraso como primera declaración de su función setup (). Es muy fácil hacer que Arduino entre en un bucle infinito o bloquearlo de alguna manera. Si eso sucede, ese breve retraso le permite reiniciar su Arduino y cargar un boceto en blanco antes de que se bloquee nuevamente. .

Finalmente tomé esta pequeña idea y la hice portátil ...

Si quieres ver una idea genial para un juego similar (pero mucho más avanzado). Consulte este https://www.instructables.com/id/Lego-Mini-Memory-Game de Peter Kent. Hizo el juego en dispositivos móviles con una interfaz para un automóvil de Lego. ¡Es realmente asombroso!

Código

  • Código del juego de memoria
Código del juego de memoria Arduino
Este es el código completo del juego. Simplemente cópielo y péguelo en su IDE favorito y cárguelo en Arduino.
 #define PLAYER_WAIT_TIME 2000 // El tiempo permitido entre presionar los botones - secuencia de 2s byte [100]; // Almacenamiento de la secuencia de luz byte curLen =0; // Longitud actual de la secuencia byte inputCount =0; // El número de veces que el jugador ha presionado un botón (correcto) en un byte de turno dado lastInput =0; // Última entrada del playerbyte expRd =0; // El LED que se supone que está encendido por el playerbool btnDwn =false; // Se usa para verificar si se presiona un botón bool wait =false; // ¿Está el programa esperando que el usuario presione un botón? Bool resetFlag =false; // Se usa para indicar al programa que una vez que el jugador perdió el byte soundPin =5; // Byte de salida del altavoz noPins =4; // Número de botones / LED (mientras trabajaba en esto, estaba usando solo 2 LED) // Podrías hacer el juego más difícil agregando una combinación adicional de LED / botón / resistencias.byte pins [] ={2, 13, 10 , 8}; // Pines de entrada de botón y pines de salida de LED:cambie estos valores si desea conectar sus botones a otros pines // El número de elementos debe coincidir con noPins debajo de long inputTime =0; // Variable de temporizador para el retardo entre las entradas del usuariovoid setup () {delay (3000); // Esto es para darme tiempo para respirar después de conectar el arduino - se puede quitar si quieres Serial.begin (9600); // Iniciar monitor de serie. Esto también se puede eliminar siempre que elimine todas las referencias a Serial debajo de Reset ();} ////// Establece todos los pines como INPUT o OUTPUT según el valor de 'dir' /// void setPinDirection (byte dir) {for (byte i =0; i  rápido | número grande -> lento /// destello vacío (frecuencia corta) {setPinDirection (SALIDA); /// Estamos activando los LEDS ahora para (int i =0; i <5; i ++) {writeAllPins (HIGH); bip (50); retraso (frecuencia); writeAllPins (BAJO); retraso (frecuencia); }} ////// Esta función restablece todas las variables del juego a sus valores predeterminados /// void Reset () {flash (500); curLen =0; inputCount =0; lastInput =0; expRd =0; btnDwn =falso; esperar =falso; resetFlag =false;} ////// Usuario perdido /// void Lose () {flash (50); } ////// El arduino le muestra al usuario lo que debe ser memorizado /// También llamado después de perder para mostrarle cuál fue su última secuencia /// void playSequence () {// Recorre la secuencia almacenada y enciende la secuencia apropiada LED a su vez para (int i =0; i  PLAYER_WAIT_TIME) {// Si el jugador tarda más del tiempo permitido, DoLoseProcess (); // Todo está perdido :( return;} if (! BtnDwn) {// expRd =sequence [inputCount]; // Encuentra el valor que esperamos del reproductor Serial.print ("Expected:"); // Salida del monitor serial - Debe eliminarse si eliminó Serial.begin arriba de Serial.println (expRd); // Salida del monitor en serie - Debe eliminarse si eliminó Serial.begin anterior para (int i =0; i   

Esquemas

simonsays_siKds3Jmk2.fzz

Proceso de manufactura

  1. Hacer Monitor Ambilight usando Arduino
  2. Juego de giroscopio Arduino con MPU-6050
  3. Diversión con giroscopio con NeoPixel Ring
  4. Juego Arduino Pong - Pantalla OLED
  5. Controlador de juego Arduino
  6. Arduino Touch Breakout Game
  7. Pixie:un reloj de pulsera NeoPixel basado en Arduino
  8. Pixel Chaser Game
  9. Juego automatizado de Dino usando arduino
  10. Cámara de vigilancia remota móvil
  11. Guante de mano inteligente