
Creando SIMON con Arduino y S4A
En este tutorial vamos a estudiar las entradas digitales en S4A construyendo el clásico juego llamado Simon con nuestro Arduino!
Este juego consta de cuatro pulsadores y cuatro leds de colores diferentes, en nuestro caso son: verde, rojo ,amarillo y azul.
En el desarrollo del juego la máquina emite una nota musical y enciende el led que tiene asociado (cada led tiene una nota musical asociada).

El jugador debe pulsar el botón asociado al led y a su nota para repetir la nota musical (y encender el led).
Después de que el jugador pulse el botón la máquina vuelve a empezar con la primera nota y añade una segunda nota (con su led). De nuevo es turno del jugador que debe acertar la serie que va generando la máquina, en este caso primero pulsará el botón de la primer nota/led y después el de la segunda.
El juego continua aumentando en cada ciclo una nueva nota musical.
El juego termina cuando el jugador se equivoca en la serie de notas (y colores de los leds).
El desarrollado que tenemos aquí es para un jugador que compite contra la máquina, podemos ver como funciona en el vídeo.
Material necesario:
- Placa Arduino
- Placa de contactos
- 4 pulsadores
- 4 resistencias de 10kΩ (para los pulsadores)
- 4 leds de diferentes colores
- 4 resistencias de 470Ω (para los leds)
Las notas musicales las generará el ordenador a través de la función
de Scratch (S4A) “tocar nota“:
Mensajes en S4A

El código para este ejemplo incluye una estructura nueva: los intercambios de mensajes.
En Scratch (y en S4A) podemos enviar un mensaje a todos los scripts que están funcionando, la forma de enviar un mensaje es con la instrucción “Enviar a todos ….“.
Los mensajes son leídos por los scripts con la instrucción “Al recibir …“.
Cuando se utiliza un texto en la instrucción “Enviar a todos…” aparece este mensaje, de forma automática, en la lista de mensajes de la instrucción “Al recibir…“.
En este ejemplo usaremos los mensajes para indicar el conjunto de acciones que vemos en la imagen:
- Se debe encender un led activando una salida
- Se hace sonar una nota musical
- Se espera un tiempo
- Se apaga el led desactivando la salida.
El script está preparado para recibir cinco mensajes: 1, 2, 3, 4 y error. Para cada mensaje recibido ejecutará el código asociado al mensaje, es decir, el código que está debajo de la instrucción “Al recibir…”
En el caso del mensaje error el código a ejecutar es diferente:
Repetir tres veces:
• Encender los cuatro leds
• Hacer sonar un sonido de tambor
• Apagar los cuatro leds
• Hacer sonar el sonido del tambor
• Después de las repeticiones esperar un segundo.
El código del juego
Para el código del juego utilizamos un nuevo tipo de variable: la lista, en esta variable podemos añadir más de un valor, contendrá un conjuto de valores: la lista de leds/colores que hay que pulsar.
Para manejar los valores de la lista tenemos las instrucciones:
- Añade … a lista Para añadir un nuevo valore al final de la lista.
- Borrar … de lista Borra el primero, el último o todos los elementos de la lista. ….
- Item posición de lista nos da el valor guardado en la posición indicada. ….
Además tenemos dos variables: elemento y botón pulsado. La variable elemento la emplearemos para recorrer los elementos de la lista. La variable botón pulsado la emplearemos para registrar que botón ha pulsado el jugador.
- El código comienza borrando todo los elementos de la lista (para empezar de cero).
- Entramos en un bucle continuo que termina cuando el jugado se equivoca.
- Como no hay elementos inicializamos la variable elemento a 0
- Añadimos un número aleatorio (entre 1 y 4) a la lista. Este número se corresponde con cada nota y color del led.
- Abrimos un bucle que se repite tantas veces como elementos hay en la lista
- Añadimos 1 a la variable elemento par ir recorriendo todos los elementos de alista)
- Enviamos un mensaje con el elemento de la lista (1, 2,3 o 4). Esto encenderá el led y hará sonar la nota musical.
- Esperamos 0.4 segundos
- Este bucle hace sonar todas las notas acumuladas en la lista (encendiendo y apagando los colores correspondientes). Una vez terminada la lista es el turno del jugador para lo que inicializamos la variable elemento (ya que tenemos que recorrer la lista de nuevo para comparar las notas acumuladas con las que pulsa el jugador)
- Entramos en un bucle que se repite tantas veces como elementos hay en la lista
- Inicializamos la variable botón pulsado a cero (no se ha pulsado ningún botón)
- Añadimos 1 a la variable posición para ir recorriendo la lista
- Entramos en otro bucle que se repetirá hasta que la variable botón pulsado sea mayor que cero (es decir hasta que el jugador pulse un botón)
- Dentro del bucle comprobamos si se ha pulsado algún botón (si el valor del sensor analog 1,2,3 o 4 es superior a 1000) y en caso de que se pulse alguno la variable botón pulsado recoge ese valor.
- A continuación se compara el valor de la variable botón pulsado con el elemento de la lista si son iguales se envía el mensaje para que suene la nota y se encienda el led.
- Si no coincide se envía el mensaje de error y se detiene el programa.



