Simon su Arduino

Oggi voglio parlarvi del mio progetto con Arduino per realizzare Simon, un classico gioco elettronico degli anni ’80, in cui bisogna memorizzare una sequenza di luci e suoni sempre più lunga ed elaborata e ripeterla premendo i quattro tasti corrispondenti.

Per realizzare il mio Simon, ho utilizzato un microcontroller Arduino UNO, quattro LED colorati, quattro pulsanti e un buzzer.

Simon.ino: Simon su Arduino

Lo schema

Lo schema è relativamente semplice, perchè consiste nel collegare 4 LED e 4 pulsanti: ognuno deve essere collegato da un capo a GND e dall’altro a un pin digitale di Arduino, tramite una resistenza: da 220 Ω per i LED, da 10 kΩ per i pulsanti. Anche il buzzer va collegato a GND e a un pin digitale.

Schema del circuito di Simon.ino

Il codice

Nel codice (sketch, come si chiama per Arduino) ho definito molte funzioni, in modo da rendere il loop molto essenziale e leggibile:

void loop()
{
  if (error == 0) {
    // Add new note to sequence and play
    addToSequence();
    playSequence();

    // Get user sequence
    while ((currentIndex < sequenceLength) && (error == 0)) {
      getUserSequence();
    }
    currentIndex = 0;
  }
  else {
    // In case of mistake
    gameOver();
  } 
} 

La funzione più complessa è getUserSequence(), che resta in ascolto della pressione dei pulsanti da parte dell’utente: quando premuto accende il LED e suona la nota corrispondente, e controlla che sia la nota giusta nella posizione corrente della sequenza.

Se la sequenza inserita dall’utente è corretta, lo sketch chiama le altre funzioni addToSequence() per aggiungere una nuova nota casuale alla sequenza e playSequence() per riprodurre la sequenza casuale, accendendo i LED ed emettendo i suoni.

Per lo sviluppo del codice, prima di assemblare tutti i componenti, ho usato l’ambiente di prototipazione Tinkercad di Autodesk dove puoi provare la simulazione del circuito funzionante.

Miniaturizzato su millefori

Dopo aver realizzato il prototipo sulle breadboard, ho potuto miniaturizzare il gioco usando due piccole schede millefori e una pulsantiera recuperata da un vecchio Tapuino.

Il prossimo e ultimo passo sarà realizzare una scatoletta stampata in 3D… 😉