sábado, 4 de septiembre de 2021

Juego "Simon Dice" (Simon Says) hecho en Arduino

Después de tanta prueba y error pude crear mi versión del juego “Simón dice” (Simon Says).

Sé que hay varios ejemplos en internet del juego pero quería crear una versión propia. Vi varios ejemplos (y probé otros tantos), la mayoría no los pude hacer funcionar a pesar de copiar y pegar el código directamente en el IDE, otros que sí funcionaban me parecía que el código era muy rebuscado.
Igualmente me había propuesto crear mi propia versión como un desafío que fuese más sobre el código que sobre las conexiones o la parte técnica.

El resultado lo pueden ver en el video, que aún tiene algún que otro bug a corregir, pero funciona bastante bien.
Creo recordar que la versión original aumentaba la velocidad de la secuencia que mostraba lo que iba ingresando el jugador. No incluí esa función en el código, me pareció que así era más amigable al jugador (además de que tengo pésima memoria _(ツ)_/ ).

Foto muestra
El código está bastante comentado. Para que quien lo descargue pueda seguir paso a paso para qué es cada parte del código y, con suerte, no tenga que luchar tanto como yo para entender los ejemplos que tanto abundan.
Creo que el resultado es bastante bueno y para aquellos que estén aprendiendo, como yo, les pueda ser de bastante utilidad.

La única parte del código que debo aclarar no es de mi autoría es la melodía que se reproduce cuando el jugador pierde la partida. La misma la copié del siguiente link: https://forum.arduino.cc/t/piezo-buzzer-win-and-fail-sound/133792/2, así que los créditos van al autor. Puede que otras partes del código estén basados en ejemplos que se encuentren en internet, no recuerdo haber copiado otra cosa; pero como ví tantos ejemplos cuando me estancaba puede que algo se me haya quedado. Aseguro que salvo lo mencionado recién, el resto fué escrito por mí.

Las conexiones son bastante sencillas. Recuerden conectar los leds con sus correspondientes resistencias de 220 ohms y los pulsadores con sus resistencias de 100 ohms a tierra (ground/GND).

Conexiones
 Conexiones:

Elementos PIN
Led 1 D6
Led 2 D7
Led 3 D8
Led 4 D9
Pulsador 1 D5
Pulsador 2 D4
Pulsador 3 D3
Pulsador 4 D2
Buzzer D11

Usé leds de diferentes colores porque me parecía más atractivo visualmente, pero es indistinto que leds utilicen.

Es importante (si modifican las conexiones) dejar sin conectar el pin A0, ya que como se verá en el código se utilizará como semilla para generar la secuencia aleatoria. De usarse ese pin recuerden cambiar randomSeed(analogRead(0)) a algún pin que no estén utilizando.

Una segunda versión del juego podría incluir:

  • Sonidos al presionar los pulsadores y reproducir dichos sonidos al repetirse la secuencia.
  • Algún tipo de display para mostrar el nivel alcanzado por el jugador.

Bueno, espero les haya interesado / servido este proyecto. Creo que el resultado es bastante divertido.

Link al proyecto en GitHub: https://github.com/mcattani/simon_dice_arduino

Espero sus comentario debajo! :)

Saludos.