Gioco Simon con Arduino Uno: storia, funzionamento e progetto educativo

Un gioco semplice da capire, immediato da utilizzare e sorprendentemente efficace per mettere alla prova memoria, attenzione e concentrazione.

Il Simon è uno di quei giochi elettronici che, pur basandosi su una meccanica estremamente semplice, è riuscito a diventare un’icona della cultura videoludica e dell’elettronica da intrattenimento.

In questo progetto abbiamo deciso di ricreare il principio del gioco utilizzando Arduino Uno, LED, pulsanti, un buzzer e un display LCD 16×2, trasformando un classico gioco di memoria in un vero e proprio laboratorio didattico di elettronica e programmazione.

L’obiettivo, infatti, non è soltanto costruire un gioco funzionante: Arduino diventa la piattaforma attraverso la quale imparare a conoscere ingressi digitali, uscite, LED, pulsanti, segnali acustici, display, memoria, numeri casuali, strutture condizionali e gestione degli stati di un programma.

Il Simon originale: quattro colori, quattro pulsanti e una sequenza da ricordare.

Che cos’è il gioco Simon?

Simon è un gioco elettronico di memoria basato su un concetto molto semplice.

Il dispositivo presenta quattro pulsanti colorati. Quando viene avviato, il gioco illumina uno dei quattro colori e contemporaneamente produce un suono.

Il giocatore deve premere il pulsante corrispondente. Se la risposta è corretta, il gioco aggiunge un nuovo elemento alla sequenza, sequenze che diventano sempre più lunghe. L’errore interrompe la partita.

La difficoltà non nasce quindi dalla complessità dei comandi, ma dall’aumento progressivo della quantità di informazioni che il giocatore deve memorizzare.

Ed è proprio questa semplicità a rendere Simon particolarmente interessante anche dal punto di vista educativo.

La filosofia del gioco Simon

La forza di Simon sta nella sua capacità di trasformare una semplice sequenza di luci e suoni in una sfida cognitiva.

Il giocatore deve infatti utilizzare contemporaneamente diverse capacità:

  • memoria a breve termine, per ricordare la sequenza;
  • attenzione, per osservare correttamente luci e suoni;
  • concentrazione, per evitare di confondere gli elementi;
  • coordinazione, per associare rapidamente ciò che viene osservato al pulsante corretto;
  • progressione, perché la difficoltà aumenta automaticamente;
  • gestione dell’errore, perché un singolo errore interrompe la sequenza.

Il gioco introduce inoltre un principio molto importante: la difficoltà deve crescere insieme alle capacità del giocatore.

Una sequenza di due elementi è semplice da ricordare. Una sequenza di dieci, venti o trenta elementi diventa progressivamente più impegnativa.

Questa progressione rende Simon un esempio molto intuitivo di apprendimento attraverso la pratica e la ripetizione.


La storia di Simon

Simon è stato presentato alla fine degli anni Settanta e divenne rapidamente uno dei più riconoscibili giochi elettronici dell’epoca. Il dispositivo originale si distingueva immediatamente per la caratteristica forma circolare e per i quattro grandi pulsanti colorati. La sua interfaccia era estremamente essenziale: niente tastiera complessa, niente joystick e nessun menu.

C’erano solamente quattro colori, quattro pulsanti, luci e suoni.

Questa scelta progettuale era particolarmente efficace perché permetteva di comprendere il funzionamento del gioco praticamente senza istruzioni.

Il dispositivo mostrava una sequenza. Il giocatore doveva ripeterla La sequenza aumentava.
L’errore determinava la fine della partita.

Una filosofia di interazione estremamente semplice che ha contribuito alla longevità del gioco.

Dal Simon originale ad Arduino

Ed è proprio questa semplicità che rende Simon un ottimo progetto da ricostruire utilizzando Arduino. Un Arduino Uno può infatti trasformare il concetto del gioco in un piccolo laboratorio di elettronica programmabile.

Nel nostro progetto abbiamo utilizzato:

  • Arduino Uno come unità di controllo;
  • quattro LED colorati;
  • quattro pulsanti per il gioco;
  • un pulsante bianco START;
  • un buzzer;
  • un display LCD 16×2;
  • una serie di collegamenti elettrici;
  • resistori e componenti necessari alla realizzazione del circuito.

Arduino diventa il “cervello” del progetto. I pulsanti rappresentano gli ingressi. I LED rappresentano le uscite visive. Il buzzer rappresenta l’uscita sonora. Il display LCD permette di comunicare informazioni al giocatore.

Il programma, infine, coordina tutti questi elementi.

Il prototipo del gioco Simon realizzato con la web-app Tinkercad, simulando una scheda Arduino Uno e componenti elettronici.


Un progetto educativo prima ancora che elettronico

Uno degli aspetti più interessanti di questo progetto è che il gioco può essere utilizzato come strumento didattico.

Arduino non deve essere considerato solamente una scheda sulla quale caricare un programma già pronto. La scheda, insieme ai componenti elettronici, può diventare vero e proprio materiale didattico. Il LED, per esempio, permette di introdurre il concetto di uscita digitale. Il pulsante permette di spiegare il concetto di ingresso digitale. Il buzzer introduce il controllo di una frequenza e quindi il rapporto tra elettricità, segnale e suono. Il display LCD permette di affrontare la comunicazione tra microcontrollore e periferica.

I pulsanti permettono inoltre di introdurre il problema del rimbalzo meccanico, mentre l’utilizzo di INPUT_PULLUP permette di spiegare il funzionamento delle resistenze di pull-up.

Il programma introduce anche concetti ancora importanti della programmazione:

  • variabili;
  • array;
  • funzioni;
  • condizioni if;
  • cicli for;
  • enumerazioni;
  • numeri casuali;
  • temporizzazioni;
  • macchina a stati;
  • gestione degli input;
  • controllo delle uscite.

In questo modo il progetto diventa un percorso che collega elettronica, programmazione e logica.


Imparare costruendo

La caratteristica più interessante di un progetto come questo è che permette di imparare partendo da un oggetto concreto. Invece di spiegare astrattamente che cosa sia un ingresso digitale, possiamo premere un pulsante e osservare cosa succede. Invece di spiegare solamente che cos’è un’uscita digitale, possiamo accendere un LED.

Invece di parlare teoricamente di frequenza, possiamo generare una nota attraverso il buzzer. Invece di spiegare solamente una variabile, possiamo osservare il numero del livello cambiare sul display.

Questo approccio permette di trasformare la scheda Arduino e i componenti elettronici in una sorta di kit didattico interattivo.

Il progetto può quindi essere utilizzato in un laboratorio scolastico, in un FabLab, in un’attività maker oppure semplicemente per imparare autonomamente elettronica e programmazione.


Come funziona il nostro Simon Arduino

La versione realizzata utilizza quattro colori: BluGialloVerdeRosso
Ogni colore è associato a un LED, a un pulsante e a una nota musicale.

Quando il programma genera un elemento della sequenza, accende il LED corrispondente e produce il relativo suono.
Il giocatore deve quindi ripetere la sequenza utilizzando i quattro pulsanti.

Ad ogni risposta corretta viene aggiunto un nuovo elemento.


La selezione del numero di livelli

Una caratteristica della versione realizzata con Arduino è la possibilità di scegliere la difficoltà prima dell’inizio della partita.

Il numero di livelli è impostato inizialmente a 20, ma può essere modificato dal giocatore da un livello base di 3 fino a un massimo di 40. Questa operazione viene svolta utilizzando il pulsante Blu per aumentare il numero di livelli, mentre il pulsante Rosso ne diminuisce il numero di livelli. Scelta la difficoltà massima, con un quinto pulsante di START bianco si conferma la scelta.

La scelta di mettere un livello minimo e massimo rende il gioco adattabile a giocatori con capacità differenti, oltre a rendere per l’occasione una sfida per vincere un gadget del laboratorio: un bambino alle prime esperienze può utilizzare una sequenza relativamente breve, mentre un giocatore esperto può aumentare considerevolmente la difficoltà.


Il display LCD

Il display LCD 16×2 fornisce le informazioni necessarie durante l’utilizzo. In modalità standby mostra il messaggio di attesa. Durante la partita indica il livello raggiunto e l’avanzamento della sequenza che il giocatore deve ripetere. In caso di errore visualizza il messaggio dedicato.

Al termine della partita mostra invece la condizione di vittoria. Il display non è quindi solamente un elemento estetico: permette di introdurre il concetto di interfaccia uomo-macchina, mostrando come un microcontrollore possa comunicare informazioni all’utente.


Il LED bianco e la modalità standby

Il pulsante bianco START è accompagnato da un LED che utilizza un particolare effetto di “respiro”. La luminosità aumenta e diminuisce progressivamente, creando un effetto visivo che indica che il gioco è pronto.

Questa parte del progetto permette di introdurre un altro concetto interessante: il controllo della luminosità tramite PWM, cioè la modulazione della larghezza dell’impulso.


La modalità Demo

Il progetto include anche una modalità dimostrativa. Se il gioco rimane inutilizzato per 120 secondi, Arduino entra automaticamente in modalità DEMO.

Il display comunica l’ingresso nella modalità dimostrativa e il buzzer, insieme ai LED, produce una sequenza automatica. La modalità Demo rimane attiva per 30 secondi, dopodiché il sistema torna automaticamente alla schermata iniziale.

Questa funzione è particolarmente interessante quando il progetto viene esposto durante una manifestazione, in un laboratorio o in un FabLab: il dispositivo continua a mostrare autonomamente le proprie funzioni anche quando nessuno sta giocando.

Da schema a groviglio di cavi, con Arduino e breadboard di prototipazione

La logica software: una macchina a stati

Dal punto di vista della programmazione, una delle parti più interessanti del progetto è la gestione del gioco attraverso diversi stati.

Il programma distingue, tra gli altri:

  • standby;
  • selezione del livello;
  • animazione iniziale;
  • visualizzazione della sequenza;
  • inserimento del giocatore;
  • errore;
  • vittoria;
  • modalità Demo.

Questo approccio permette di dividere un problema complesso in tanti problemi più piccoli. È un concetto fondamentale nella programmazione dei sistemi interattivi. Invece di chiedersi “come deve funzionare tutto il gioco?”, possiamo chiederci:

“In quale stato si trova il gioco in questo momento e cosa deve fare Arduino in quello stato?”

È una metodologia applicabile anche a progetti molto più complessi.


Il codice Arduino

Il programma utilizzato per questo progetto è stato sviluppato per mantenere separati i diversi compiti attraverso funzioni dedicate.

Sono presenti funzioni per:

  • leggere i pulsanti;
  • controllare LED e buzzer;
  • aggiornare il display;
  • gestire la sequenza;
  • gestire l’errore;
  • gestire la vittoria;
  • gestire la modalità Demo;
  • gestire la selezione dei livelli.

Questa organizzazione rende il programma più leggibile e soprattutto più facile da utilizzare come strumento didattico.

L’obiettivo non è solamente ottenere un gioco funzionante, ma avere un codice che possa essere letto, analizzato e modificato per imparare.

Codice sviluppato con Arduino IDE


La mappa dei collegamenti

Nel programma definitivo i collegamenti utilizzati sono i seguenti.

ComponentePin Arduino
LED BluD7
LED GialloD8
LED VerdeD9
LED RossoD13
LED bianco STARTD6
BuzzerD10
Pulsante BluA0
Pulsante GialloA1
Pulsante VerdeA2
Pulsante RossoA3
Pulsante STARTA4
Seme casualeA5
LCD RSD12
LCD ED11
LCD D4D5
LCD D5D4
LCD D6D3
LCD D7D2

È importante sottolineare che nel progetto definitivo A0, A1, A2 e A3 vengono utilizzati come ingressi digitali indipendenti per i quattro pulsanti colorati.

Scheda elettronica Arduino Uno


Dalla scheda elettronica al programma

Il valore didattico del progetto sta proprio nel collegamento tra hardware e software. Un pulsante fisico diventa una condizione nel programma.

Un LED diventa un’istruzione. Un suono diventa una frequenza. Una sequenza memorizzata diventa un array. Un livello diventa una variabile. Una partita diventa una serie di stati.

In altre parole, il progetto permette di vedere concretamente come un programma possa controllare un oggetto fisico.

Questo è uno dei motivi per cui Arduino è una piattaforma particolarmente efficace per l’apprendimento della programmazione embedded e dell’elettronica.


Possibili attività didattiche

Una volta costruito il Simon, il progetto può diventare il punto di partenza per numerose esercitazioni. Per esempio si può chiedere agli studenti di:

  1. identificare tutti gli ingressi e le uscite;
  2. modificare la frequenza delle note;
  3. cambiare la velocità della sequenza;
  4. modificare il numero massimo di livelli;
  5. modificare i messaggi visualizzati sul display;
  6. aggiungere nuove animazioni;
  7. cambiare il comportamento della modalità Demo;
  8. studiare il funzionamento di INPUT_PULLUP;
  9. analizzare l’utilizzo degli array;
  10. comprendere il funzionamento della macchina a stati.

In questo modo il progetto non termina con la costruzione del gioco. Il gioco diventa il laboratorio.


Un progetto maker completo

Il Simon realizzato con Arduino rappresenta un esempio interessante di approccio maker perché unisce diverse discipline.

C’è una parte di elettronica, necessaria per collegare pulsanti, LED, buzzer, display e microcontrollore.
C’è una parte di programmazione, necessaria per creare la logica del gioco.
C’è una parte di progettazione, necessaria per organizzare i componenti e rendere il dispositivo utilizzabile.
E c’è una parte di interazione, perché il risultato finale deve essere comprensibile e divertente per chi lo utilizza.

Questa combinazione rende il progetto particolarmente adatto a laboratori didattici, FabLab, attività STEM e percorsi di introduzione alla programmazione.


E’ replicabile?

Il progetto è disponibile pubblicamente e con simulazione online nella piattaforma Tinkercad. Basta registrarsi gratuitamente alla web-app per poter testare il progetto o copiarlo e modificarlo. Ovviamente la simulazione può essere rallentata da diversi fattori: complessità del modello, connessione a internet, prestazioni del computer.


Un progetto maker completo

Il Simon realizzato con Arduino rappresenta un esempio interessante di approccio maker perché unisce diverse discipline.Diamo una forma!

Dopo l’assemblaggio elettronico e la programmazione


Un progetto maker completo

Il Simon realizzato con Arduino rappresenta un esempio interessante di approccio maker perché unisce diverse discipline.Conclusioni

Ricostruire un gioco come Simon con Arduino significa andare oltre la semplice replica di un oggetto del passato.

Significa prendere un concetto estremamente semplice e utilizzarlo per esplorare il funzionamento di un sistema elettronico interattivo.

Il giocatore vede quattro luci e sente quattro suoni. Dietro quelle luci, però, ci sono ingressi digitali, uscite, memoria, variabili, array, funzioni, temporizzazioni, numeri casuali e una macchina a stati.

È proprio questo il valore educativo del progetto.

Arduino trasforma l’elettronica da qualcosa da osservare in qualcosa da costruire, programmare e comprendere.

E il Simon è un ottimo punto di partenza perché il risultato è immediatamente visibile: si preme un pulsante, si accende una luce, si sente un suono e il programma reagisce.

Da un semplice gioco di memoria nasce così un piccolo laboratorio di elettronica e programmazione.


Diamo una forma

Una volta completata la parte elettronica, rimaneva un problema: come trasformare il circuito e tutti i suoi componenti in un vero oggetto da utilizzare?

Anche questo passaggio è diventato parte integrante del progetto.

L’obiettivo non era semplicemente inserire Arduino, i pulsanti, il display e il buzzer all’interno di una scatola qualsiasi, ma progettare un contenitore che fosse funzionale, resistente, facilmente assemblabile e coerente con l’estetica del gioco.

Per questo abbiamo scelto di realizzare il contenitore utilizzando compensato di legno dello spessore di 3 mm, sfruttando le possibilità offerte dal taglio laser.

Il progetto diventa così ancora più completo: dall’elettronica passiamo alla progettazione CAD e infine alla fabbricazione digitale.


La progettazione della scatola

Per progettare la struttura del contenitore abbiamo utilizzato la web-app MakerCase – Basic Box, uno strumento online che permette di generare rapidamente il progetto di una scatola destinata al taglio laser.

L’applicazione consente di definire le principali caratteristiche del contenitore, a partire dalle dimensioni esterne della scatola.

È inoltre possibile scegliere il tipo di assemblaggio e le caratteristiche degli incastri tra i vari pannelli.

Questo è particolarmente importante quando si lavora con materiali sottili come il compensato da 3 mm: anziché affidarsi a viti, colla o altri sistemi di fissaggio, i diversi elementi possono essere progettati affinché si incastrino direttamente tra loro.

Il risultato è una struttura composta da pannelli che, una volta tagliati, possono essere assemblati come un piccolo sistema costruttivo.

La progettazione della scatola attraverso MakerCase: dimensioni, pannelli e incastri vengono definiti prima della fabbricazione.


Dal modello digitale al file DXF

Una volta definite le caratteristiche della scatola, MakerCase permette di esportare il progetto in un formato vettoriale utilizzabile dai software per la progettazione e il taglio.

Nel nostro caso viene utilizzato il formato DXF, particolarmente adatto per trasferire geometrie bidimensionali verso programmi CAD e software destinati al controllo delle macchine laser.

Questo passaggio rappresenta un concetto fondamentale della fabbricazione digitale: un oggetto fisico viene prima descritto attraverso una geometria digitale e successivamente trasformato nuovamente in un oggetto reale.

Il file non rappresenta quindi ancora la scatola fisica, ma contiene le geometrie necessarie per realizzare i singoli pannelli.


Aggiungere i fori e l’interfaccia del gioco

La scatola generata automaticamente da MakerCase costituisce però soltanto la struttura di base.

Per trasformarla nel contenitore del Simon è necessario aggiungere tutte le aperture necessarie per installare i componenti elettronici.

Questa parte della progettazione viene completata utilizzando un software CAD.

Sul disegno vengono quindi individuate e posizionate con precisione le aperture per:

  • i quattro pulsanti colorati;
  • il pulsante bianco START;
  • il display LCD 1602;
  • il passaggio dei collegamenti eventualmente necessari;
  • gli altri elementi che devono essere accessibili dall’esterno.

La posizione dei componenti non è un dettaglio secondario.

Il pannello superiore rappresenta infatti la vera interfaccia fisica del gioco: è il punto nel quale l’utilizzatore entra in contatto con l’elettronica.

Per questo motivo i pulsanti devono essere facilmente raggiungibili, il display deve essere leggibile e la disposizione dei quattro colori deve risultare immediatamente comprensibile.


Dal DXF al taglio laser

Il file DXF viene successivamente importato nel software utilizzato per preparare il lavoro con il laser cutter.

In questa fase è possibile organizzare le geometrie, impostare le lavorazioni e distinguere le parti destinate al taglio da quelle destinate all’incisione.

È proprio qui che il progetto passa dalla semplice progettazione alla fabbricazione.

Il laser permette infatti di realizzare con precisione sia i contorni dei pannelli sia le incisioni necessarie a caratterizzare il contenitore.

Il passaggio dalla progettazione digitale alla lavorazione del compensato attraverso il taglio e l’incisione laser.Incidere le istruzioni direttamente sul legno

Oltre ai fori per i componenti, abbiamo utilizzato il laser anche per realizzare le incisioni direttamente sulla superficie del compensato.

In questo modo il pannello non contiene soltanto i componenti elettronici, ma incorpora anche le informazioni necessarie per utilizzare il gioco.

Le indicazioni relative ai pulsanti, ai colori e alle modalità di utilizzo possono quindi essere incise direttamente nel materiale. Questa scelta permette di evitare etichette aggiuntive e, soprattutto, trasforma il contenitore in parte integrante dell’interfaccia.

Il legno non è più solamente una struttura che contiene l’elettronica: diventa contemporaneamente supporto, superficie grafica e interfaccia utente.

Il pannello in compensato dopo il taglio laser, con i fori per i componenti e le istruzioni incise direttamente sulla superficie.


La filosofia Maker

È proprio questo uno degli aspetti che caratterizzano maggiormente il progetto. Non abbiamo acquistato semplicemente un gioco già pronto e non ci siamo limitati a replicarne il funzionamento elettronico.

Abbiamo seguito un percorso che parte dall’idea e arriva all’oggetto fisico:

IDEA → ELETTRONICA → PROGRAMMA → PROGETTAZIONE CAD → TAGLIO LASER → ASSEMBLAGGIO → OGGETTO FINITO

Ogni passaggio introduce una competenza diversa, ma tutti fanno parte dello stesso processo creativo.

È questa, in fondo, una delle idee alla base della cultura maker: imparare facendo, sperimentando, sbagliando, correggendo e trasformando progressivamente un’idea digitale in qualcosa di reale.

Il Simon diventa così molto più di un semplice gioco di memoria.

Diventa un piccolo progetto multidisciplinare nel quale elettronica, programmazione, progettazione e fabbricazione digitale lavorano insieme per dare forma a un’idea.

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. Per maggiori informazioni.

Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo. Privacy Policy di FABLAB BERGAMO

Chiudi