Simon – El juego (Simon Says)

Muchos años antes de que existieran las consolas portátiles de videojuegos tal como hoy las conocemos, vio la luz un juego que marcó toda una época y una generación con sus sonidos “robóticos” y luces psicodélicas. Conocido de muchas maneras y con diversos nombres según el país donde se fabrique, el Simon fue uno de los precursores en la incipiente industria de los videojuegos, allá por el año 1978. Como regalo de Navidad, no te vamos a hablar de su historia y legado sino que vamos a ayudarte a construir una réplica muy particular de esta maravilla que marcó un antes y un después en la historia de los juegos. Con varios niveles de dificultad para hacerlo más interesante y para proponer un verdadero desafío a tu capacidad de memoria visual y auditiva, podrías pasar horas enteras jugando con este sencillo aparatito. Una máquina que pone a prueba tus condiciones de memorizar. ¿Te animas?

Inspirado en el primitivo juego Touch Me de Atari (1974), Ralph Baer diseñó para la compañía Milton-Bradley (1978) una consola circular de juego que encendía luces y emitía sonidos que el jugador debía repetir en la misma secuencia que el juego entregaba, pulsando grandes teclas de colores. La esencia del juego se centraba en la capacidad del jugador de retener en su memoria la secuencia de luces que se encendían una tras otra y luego repetirlas en forma correcta y ordenada. Acertar todas las pulsaciones provocaba un avance en el juego donde se agregaba un sonido y un nuevo color a pulsar en el siguiente movimiento. Equivocarse de tecla durante la rutina provocaba un sonido muy particular y desagradable que indicaba la derrota y el fin de la partida. Parece muy sencillo, muy elemental, muy básico y hasta aburrido o monótono. Sin embargo, este juego se mantiene vigente luego de más de treinta años de haber salido al mercado. Lo encontrarás en cualquier portal de ventas por Internet con diversos nombres, pero todos los anunciantes apuntan al mismo objetivo: poner a prueba tu capacidad de memorizar eventos.

Circuito propuesto para el Simon

El circuito
Mediante la utilización de un PIC 16F88, cuatro pulsadores, cuatro diodos LEDs de colores distintos entre sí y un pequeño puñado de componentes accesorios podrás dar vida a este interesante juguete que seguramente entusiasmará a más de uno en la familia. Teniendo la precaución de no confundir la correspondencia entre pulsadores y LEDs, el circuito no presentará mayores complicaciones de montaje más allá del tamaño que se le quiera dar al juego terminado. Es decir, mientras respetes la correspondencia entre LED1 y SW1, LED2 y SW2, LED3 y SW3 y LED4 y SW4, el circuito funcionará a la primera y sin inconvenientes.

Como puedes ver en el circuito, las entradas de los pulsadores en el microcontrolador serán activas en estado alto, mientras que las salidas de los indicadores luminosos serán activas en estado bajo. Debes tener especial cuidado de no invertir la polaridad de los diodos LEDs al ensamblar el circuito, ya que luego de un par de horas de trabajo de armado descubrirás un LED al revés y tendrás que desarmar gran parte de lo ya realizado, lo que puede ser una tarea muy fastidiosa. Por eso, es conveniente prestar mucha atención al insertar los diodos en la placa. Otro de los cuidados que debes tener es al programar el PIC: debes observar que el fuse LVP se encuentre desactivado. Si utilizas WinPIC800, al igual que nosotros, será muy sencillo desmarcar el casillero correspondiente. Si no realizas este ajuste, no obtendrás salida de audio a través del pin RB3 (¡Gracias Ariel!).

Un gabinete, algunos pulsadores, una placa, LEDs y muchas ganas de crear.

Para el sistema de audio, debes tener en claro que no podrás utilizar un parlante común de 4 u 8 Ohms sino que necesitarás un buzzer capacitivo, como verás en las imágenes más abajo. Esto es muy importante de destacar ya que conectar un parlante convencional en forma directa a la salida de uno de los puertos del microcontrolador podría destruir la salida por excesiva circulación de corriente a través de la bobina móvil del parlante.

Nosotros hemos utilizado en el montaje ejemplo un gabinete de pastillas de menta de dos centímetros y medio de alto donde albergaremos todo el desarrollo. Además, como perla destacada en el artículo, utilizaremos una técnica quizás novedosa para ti que puede servirte para futuros diseños donde debas conjugar la presencia de pulsadores e indicadores luminosos. Como puedes ver en las imágenes, el LED correspondiente a cada color se coloca entre dos pulsadores apoyando con los bordes de su base, un poco en un pulsador y otro poco en el contiguo. Ambos pulsadores estarán conectados en paralelo, por lo tanto, al efectuar presión sobre el cuerpo del LED, en forma obligatoria al menos uno de los dos pulsadores se activará dando lugar a un evento de acción de tecla.

Para lograr que el LED quede ubicado en su posición y no se “caiga” o se salga de la placa se le efectúa un moldeado a sus pines de conexión para impedir el movimiento hacia arriba. De esta forma, el LED sólo podrá bajar y activar el/los pulsadores sin salir de su posición. Si bien es una forma de optimizar espacios, la complicación viene por el lado de las conexiones del LED al circuito que deberá realizarse con pequeños cables para lograr una conexión flexible y activa. Si quisiéramos evitar este método y soldar en forma directa al impreso los terminales de los LEDs, el accionamiento de los botones sería muy duro y, tarde o temprano, las soldaduras o los pines del LED terminarían rompiéndose (gracias a Murphy, sucederá temprano y en plena demostración de nuestra creación).

Una vez que los cuatro LEDs se encuentren montados en posición correcta y con su pines acomodados de manera tal que no se salga el indicador luminoso de la placa, podemos comenzar a agujerear el gabinete seleccionado para el montaje, disponer del anclaje eficaz y firme de la placa de botones y comenzar a construir el circuito. Esto es para aquellos que decidan utilizar, como en nuestro caso, una placa universal para prototipos. Si en cambio tú deseas construir un PCB dedicado a la aplicación del juego, con montar los componentes ya será suficiente y podrás comenzar a disponer su armado definitivo dentro del gabinete.

Debes ser consciente que a medida que avances con la instalación de los cables de conexión dentro del gabinete, el espacio comenzará a reducirse en forma drástica y muy rápida. Deberás extremar los cuidados en esta parte del diseño para no perder el tiempo con construcciones que llegan a un punto en que admites que te quedas sin espacio cuando ya has hecho más de la mitad del trabajo. Si no estás seguro de la posibilidad de conexión de todos los componentes, será mejor que en el inicio ya busques un gabinete de mayor tamaño. La parte más delicada y crítica llega cuando se debe montar el microcontrolador con su correspondiente capacitor de desacoplo de 100nF entre los terminales de alimentación, el cristal de 10Mhz y los capacitores cerámicos de 33pF. Una vez superada esa etapa, sólo restará sujetar el porta-pilas a la tapa trasera y la llave de encendido de la unidad. Luego deberás encontrar la ubicación más práctica para el buzzer y, si es necesario, proveer al gabinete de pequeños orificios para que el sonido pueda ser escuchado claramente por el jugador.

La dinámica del juego logrado es muy sencilla y la podrás observar en el video que te dejamos más adelante. Al encender el aparato, queda activada en forma permanente la salida del primer pulsador, encendiendo el LED correspondiente. Esta situación indica cuál es el primer indicador luminoso. Además, puedes iniciar el juego desde la rutina más fácil o con menor velocidad en la secuencia. En sentido de las agujas del reloj, nosotros hemos dispuesto el resto de los pulsadores en orden ascendente. Es decir, el último será la rutina más rápida y más difícil del juego. Entonces, al conectar la llave principal, se inicia el juego con el LED1 encendido en forma permanente invitando a jugar en el nivel más sencillo. Al pulsarlo, destellan todas las luces (las cuatro) indicando el inicio del juego para luego comenzar con la partida.

Conclusión
El Simon es un juego puramente educativo y de gimnasia mental que sólo ha sido superado por el Tetris en cuanto a ejercitación de la mente. Si nos desviamos a otros tipos de juegos más relacionados con el ocio banal, este juguete podría resultar algo aburrido como mencionamos al principio. Si lo tuyo en cambio es el desafío de conocer los alcances de concentración y memorización que puedes lograr, el Simon (que nunca morirá) puede brindarte muchas horas de buena diversión acompañada de un ejercicio mental muy saludable. Queremos agradecer al amigo José María Asensio que gentilmente nos ha facilitado el código fuente del programa que dejamos al final del artículo para que puedas descargar y programar el PIC que te permitirá armar este bonito juego.

Deja tu voto

1 punto
Upvote Downvote

Total votes: 7

Upvotes: 4

Upvotes percentage: 57.142857%

Downvotes: 3

Downvotes percentage: 42.857143%

Mario

47 Comments

Deja una respuesta
  1. Buenas mario:

    por lo que veo tienes que entrenar con el juego, si… 😀
    Me ha parecido un ejemplo muy interesante, sobretodo como haces para usar el led encima de los pulsadores. Podrias poner una foto en otro angulo, para ver como estan dobladas las patillas del led? en la de la izquierda se ve parte, pero no se distingue bien con la soldadura que hay cerca.

    Como siempre, un muy buen trabajo, siempre consigues que nos interese la electronica cada dia mas.

    • Hola jakala !

      Gracias por tus comentarios ! Está muy interesante la idea de utilizar los mismos LEDs como pulsadores ¿verdad? Incluso cuando se dispone de LEDs rectangulares o cuadrados, también es un montaje que llama mucho la atención. "Tocar el LED y que actúe" :))

      Fíjate si la fotografía que coloqué ahora está mejor, amigo. Mientras construía el prototipo que se aprecia fuí sacando algunas imágenes y ésta es otra toma que muestra la forma de doblar los pines. Además, en esta imagen le agregué texto para ver la forma de hacerlo. Si continúa confuso, vería de colocar otra imagen (aunque no me quedan muchas, ni mejores).

      Saludos Cordiales!
      Felicidades para tí y todos tus seres queridos! 🙂

  2. Excelente proyecto, con razon sigue vigente el jueguito.
    Tengo una duda el parlante puede ser piezoelectrico?, es muy
    similar al del proyecto.

    Saludos desde Chile!!

  3. Buenas tardes desde México, una duda, es necesario tener algun conocimiento especial para armar uno de estos, es que me intereso el proyecto, pero pues ni idea de como proseguir.

    • Hola horus !

      Ningún conocimiento especial amigo ! :))
      Sólo ganas de tener un Simon para jugar !

      Los únicos conocimientos "especiales" son algo de prolijidad, confianza en tí mismo y espíritu de progresar.
      Además, si no tienes programador de PICs, puedes conseguir algún conocido que te grabe el PIC y luego tú armar el proyecto paso a paso como te lo explicamos en el artículo.

      Sólo es cuestión de proponértelo.
      Recuerda siempre que sólo ganan los que arriesgan, el resto se queda mirando …

      Saludos Cordiales y Felices Fiestas amigo ! 🙂

      • Mario es ante todo un caballero, me gusto muchisimo la respuesta, y la ultima frase "Recuerda siempre que sólo ganan los que arriesgan, el resto se queda mirando …" me llego de verdad, la voy a escribir y verla cada dia. Un maetro de verdad.

  4. Según creo yo, si recuerdo bien, la dificultad del Simon dependía de dos factores que podíamos controlar a nuestro antojo. Uno era la dificultad al momento de entregar las secuencias y el otro era la velocidad.

  5. Hola Mario:
    Seria muy bueno tambien que hagas un medidor de resistencias altas, como lo hiciste con el medidor de capacitores que tenia rango automatico y media altos capacitores.
    Porque el valor maximo que tienen los multimetros que venden en mi ciudad son de 20Mohm nada mas y yo tengo resistencias de 100Mohm y mas altas y no las puedo medir.
    Me encanta neo teo porque de aqui saco los proyectos y los armo a la mayoria.
    Saludos a todos.

    • Hola LEO !

      Gracias por estar con nosotros ! 🙂

      Más de 20Mohm ya sería un medidor de aislación (Terrómetro) por sobre un medidor de resistencias de alto valor. Es verdad que los multímetros convencionales sólo llegan a 20Mohm y algunos productos de precio más elevado alcanzan los 40Mohm. Sería interesante para facilitar la medición de aislación en motores eléctricos este tipo de instrumentos.
      Hace muchos años (¿más de 25 ya?) supe utilizar en una industria, unos medidores de marca Meger (o algo similar) que eran a manija y generaban una alta tensión para ensayar la aislación de motores eléctricos.

      Sería un interesante proyecto. Por supuesto que estudiaremos su viabilidad de construcción para ofrecerlo aquí LEO.

      Saludos cordiales y Felicidades amigo ! 🙂

    • Por supuesto Piojo.

      Sólo que deberías reprocesar el código fuente para obtener un nuevo archivo HEX compatible con el 18F452. Pero el código seguiría siendo el mismo utilizando los puertos A y B

      Saludos y Felicidades !

  6. Hola Mario:

    Este es un genial retronovedoso articulo, combinas un juego muy divertido de hace mucho tiempo con tecnologia que nos enseñas actualmente, de verdad que es genial. Lo que mas nos anima cuando leemos tus articulos, es que tu mismo haces las cosas, las pruebas "aunque no seas muy prolijo con Simon, jeeje :)" y compruebas que funciona, asi que haces que queramos hacer cada proyecto que publicas.

    Un gran abrazo desde Colombia

    • Hola amigo Yesbond ! :))

      Siempre leemos por ahí una frase clásica que dice: "una imágen vale más que mil palabras" y eso es algo que trato de imprimir en los artículos. Muchas veces, los montajes que encontramos en la web son más teóricos que prácticos y sentimos gran frustación al hallar poca información de montaje o ninguna prueba fehaciente de funcionamiento.

      Por eso tratamos siempre de "mostrar resultados" además de desarrollar una explicación.

      Saludos amigo !
      Muchas Felicidades para tí y tus seres queridos !

      PD: Prometo practicar más con el juego y hacer otro video con una mejor performance. :))

  7. Hola ! no conozco nada de electronica pero soy programador y me interesa mucho meterle a la electronica, pero siempre he tenido una pregunta, como se carga un software dentro del hardware que nosotros mismo creamos?
    Saludos !

    • #19 hola mario con el plano tuyo arme el simons pero no m,e funciona. mi pregunta es como programo el integrado o cual otro me sirve para el proyecto…gracias por su colaboracion

  8. Disculpe MArio SAcco, pero no entiendo cómo has hecho la soldadura de los cables. Si alguien sabe cómo es que me escriba a mi correo, porfavor

  9. hola mario yo desactive el fuse lvp desde el winpic 800 pero cuando lo pruebo al programa desde el proteus no tengo ninguna respuesta el portb,3 esta siempre en 0.
    perdona por las molestias es que me gusto mucho el circuito y me decidi a hacerlo y la verdad que con sonido se ve mucho mejor.
    saludos

  10. Señor Mario ,Mi nombre es jhonny y escribo desde Colombia, hace varios meses vengo informándome con sus artículos y esta semana ví este y me despertó el interés por hacerme uno , lo desarrollé en el pic basic pro pues no comprendo muy bien el C ,y el resultado , aunque no el mismo, si es muy parecido y quiciera compartirlo con ud. Tambié quiciera preguntarle si es posible simular palabras en vez de sonidos y como.

    cmcon = 7

    x var byte
    y var byte
    z var byte
    paso var byte
    dato var byte
    reg0 var byte
    reg1 var byte
    reg2 var byte
    reg3 var byte
    reg4 var byte
    reg5 var byte
    reg6 var byte
    reg7 var byte
    reg8 var byte

    trisa = %11111111
    trisb = %00000000

    sound portb.7,[105,10,115,10,120,10,121,10,122,10,124,10,130,10]
    prueba :
    for x = 1 to 3
    portb = %1111
    pause 400 : sound portb.7,[125,8,123,8,120,8,110,8,108,8,105,8] ‘envia la frecuencia 125 (125 * 78.74Hz) durante 14 ms
    ‘y la frecuencia 123 durante 15 ms
    portb = %0000
    pause 400
    next x

    paso = 0

    ini :
    pause 1000
    for y = 0 to paso
    lookup y,[1,4,2,4,8,4,8,2,1],dato
    portb = dato
    pause 300
    portb =%0000
    pause 100
    next

    paso = paso + 1

    reg0 = 1
    reg1 = 4
    reg2 = 2
    reg3 = 4
    reg4 = 8
    reg5 = 4
    reg6 = 8
    reg7 = 2
    reg8 = 1

    siga0:
    goto ptecla0

    ‘———————- rutinas de muestreo ————————-

    mostrar0:

    z = 0
    portb = reg0 : sound portb.7,[105,9,120,9]
    pause 100
    portb = %0000
    z = z+1 ‘con esta var hacemos comparacion con paso para que siga la secuencia
    if paso != z then goto ptecla1
    goto ini

    mostrar1:
    portb = reg1 : sound portb.7,[105,10,120,10]
    pause 100
    portb = %0000
    z = z+1
    if paso != z then goto ptecla2
    goto ini

    mostrar2:
    portb = reg2 : sound portb.7,[105,10,120,10]
    pause 100
    portb = %0000
    z = z+1
    if paso != z then goto ptecla3
    goto ini

    mostrar3:
    portb = reg3 : sound portb.7,[105,9,120,10]
    pause 100
    portb = %0000
    z =z+1
    if paso != z then goto ptecla4
    goto ini

    mostrar4:
    portb = reg4 : sound portb.7,[105,14,120,15]
    pause 100
    portb = %0000
    z = z+1
    if paso != z then goto ptecla5
    goto ini

    mostrar5:
    portb = reg5 : sound portb.7,[105,14,120,15]
    pause 100
    portb = %0000
    z = z+1
    if paso != z then goto ptecla6
    goto ini

    mostrar6:
    portb = reg6 : sound portb.7,[105,14,120,15]
    pause 100
    portb = %0000
    z = z+1
    if paso != z then goto ptecla7
    goto ini

    mostrar7:
    portb = reg7 : sound portb.7,[105,14,120,15]
    pause 100
    portb = %0000
    z =z+1
    if paso != z then goto ptecla8
    goto ini

    mostrar8:
    portb = reg8 : sound portb.7,[105,14,120,15]
    pause 100
    portb = %0000
    z = z+1
    if paso != z then goto prueba
    goto ini

    ‘—————————- antirrebote y pregunta si el dato introducido es correcto o no —————
    preg0: pause 5
    ptecla0:
    if porta = %1111 then goto preg0
    ‘pause 100
    if porta = %1110 then :goto mostrar0
    goto prueba

    preg1: pause 5
    ptecla1:
    if porta = %1111 then goto preg1
    ‘pause 100
    if porta = %1011 then : goto mostrar1
    goto prueba

    preg2: pause 5
    ptecla2:
    if porta = %1111 then goto preg2
    ‘pause 100
    if porta = %1101 then : goto mostrar2
    goto prueba

    preg3: pause 5
    ptecla3:
    if porta = %1111 then goto preg3
    ‘pause 100
    if porta = %1011 then : goto mostrar3
    goto prueba

    preg4: pause 5
    ptecla4:
    if porta = %1111 then goto preg4
    ‘pause 100
    if porta = %0111 then : goto mostrar4
    goto prueba

    preg5: pause 5
    ptecla5:
    if porta = %1111 then goto preg5
    ‘pause 100
    if porta = %1011 then : goto mostrar5
    goto prueba

    preg6: pause 5
    ptecla6:
    if porta = %1111 then goto preg6
    ‘pause 100
    if porta = %0111 then : goto mostrar6
    goto prueba

    preg7: pause 5
    ptecla7:
    if porta = %1111 then goto preg7
    ‘pause 100
    if porta = %1101 then : goto mostrar7
    goto prueba

    preg8: pause 5
    ptecla8:
    if porta = %1111 then goto preg8
    ‘pause 100
    if porta = %1110 then : goto mostrar8
    goto prueba

    goto ini

    end

  11. Hola Sñr. Mario, me ha parecido muy interesante tu idea, y estoy intentando montarlo en casa, solo que no encuentro el PIc 16f88 ni el programa a usar… Sería tan amable de echarme una manita? ^^
    Puedo conseguir el 16f628A, por si se puede utilizar.
    Un saludo!

  12. LA VERDAD QUE LO PUDE HACER CON UN PIC 16F84A QUE HABIA COMPRADO
    LO QUE SI ME INTERESARIA APRENDER APROGRAMAR POR QU HASTA HORA LO QUE HAGO ES BAJARLO DE LARED Y PROGRAMARLO PERO ME QUIERO INICILIZAR EN ESTO Y NECESITARIA QUE ALGUIEN ME UNA MANITO DE QUE LENGUAJE ME HACE FALTA PARA PODER ENTENDER ESTO SUPONGO QUE ES EL BAISIC PERO NO ENCUENTRO UN TUTO PARA PODER APRENDER DESDE CERO IGUAL QUIERO FLICITAR A USTEDES Y A LA PAGINA SON UNOS CRANEOS Y MUCHOS SALUDOS A TODOS

  13. hola que tal mario quisiera saber cuantas velocidades tiene este juego y que caracteristicas tiene por que me ha interesado hacer este proyecto una cosa mas el codigo fuente del pic esta ok o se tiene que hacer algun ajuste en el programa de ante mano gracias y espero tu respuesta.

  14. hola que tal mario quisiera saber cuantas velocidades tiene este juego y que caracteristicas tiene por que me ha interesado hacer este proyecto una cosa mas el codigo fuente del pic esta ok o se tiene que hacer algun ajuste en el programa de ante mano gracias y espero tu respuesta.

  15. hola, la verdad tengo tiempo tratando de armar un proyecto y tu lo acabas de resumir en poco tiempo… ja ja ja, mis preguntas o mas bien la ayuda que te pido son las siguientes, quisiera realizar este juego primero no pequeño, lo quiero para una clase con pequeñines entonces seria mas motivante algo mas grande para ellos (he pensado usar botones como de las maquinitas que traen incluida la luz), y me gustaría poder agregar mas botones ( mas o menos 16 a 20) como puedo lograr esto?, te agradecería me pudieras orientar, gracias de antemano por cierto lo que haces es colosal felicidades y sigue asi.

    • #33 hola, de dónde eres, mi interés es similar al tuyo.
      Cómo vas con el proyecto? me gustaría qe nos comunicáramos para salvar algunas dudas.
      SOy estudiante de méxico
      saludos

  16. hola una duda es q dijiste algo q se debe activar una casilla para q el buzzer pueda sonar ¿eso es se debe activar en el codigo fuente? es q uso el pic c compiler solo quisiera saber donde

  17. hola que tal mario desde peru es un grandioso proyecto el simon que hiciste queria preguntarte que caracteristicas tiene ese proyecto y a la ves pruguntarte si el programa esta ok o se tiene que agregar algun dato finalmente me despido con un fuerte abrazo y sigue subiendo proyectos como los que tienes.gracias

  18. ayuda porfavor porque cuando le hago la modificacion
    #include
    #use delay(clock=4000000)
    #use fast_io(A)
    #use fast_io(B)
    #fuses INTRC,NOWDT,NOPUT

    el juego me va lento ya no se escucha ni se ve como en el video estoy desesperado agradecere la ayuda

  19. Hola que tal mario estoy en el proceso de elaboracion del prototipo pero a la hora de pasar a lo siguiente que es montar el microcontrolador con su correspondiente capacitor de desacoplo de 100nF entre los terminales de alimentacion no he podido ya que tengo muy pocos conocimientos y en la imagen no se distingue bien, Si me pudiera enviar una guia mas completa te lo agradeceria 🙂

  20. Hola a todos, me interesa mucho este tutorial, porqe pretendo hacer un juego parecido para un proyecto escolar, pero quiero incrementar el número de opciones al doble (de 4 a 8 o 10)apenas estoy comenzando con este proyecto y estoy investigando mucho, cualquier aportación o sugerencia la agradeceré y me pongo a sus órdenes.

    Por último me gustaría qe alguien tuviera el tiempo y la amabilidad de compartirme el código a mi correo, puesto que ya intenté bajarlo pero no sé porqé no se puede… jejej o qé stoy haciendo mal.
    Gracias de antemano
    Alexa de Mex

  21. buenas, fijese que yo ya descargue el codigo fuente que tienen en este apartado del juego simon says, pero cuando lo compilo en MikroC este me tira varios errores, los cuales dicen "Undeclared identifier [output_low] in expression" entonces no me deja compilarlo, sera que me puede ayudar por favor, quiero armar ese juego

  22. Hola, Me llamo Brian, estoy utilizando tu proyecto como muestra para la exposicion de mi escuela, me parece muy bueno y se me ocurrio agregarles laser, funcionara?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.