Premessa

L’articolo segue un approccio pratico, tipico anglosassone, che porta in poche battute alla realizzazione del circuito. Durante lo stesso saranno presentati, brevemente, gli aspetti teorici necessari alla comprensione del fenomeno, rimandando poi ad ulteriori articoli di approfondimento (pubblicati nei prossimi giorni). Ciò consente di alleggerire la trattazione, non perdendo mai il filo del discorso, mantenendo alta l’attenzione del lettore.

Ancora, il forum appositamente allestito completa l’intero progetto, perché da la possibilità di chiarire eventuali dubbi, curiosità, e tanto altro, facilitando il processo di integrazione delle informazioni all’interno dello stesso articolo (aggiunte in una fase successiva), creando così un qualcosa in continua evoluzione in pieno stile open innovation.

Per chi ancora non sapesse cosa è Arduino, consigliamo di leggere questo post. Si parte!!

 

Sommario

L’obiettivo dell’articolo è guidare il lettore nella realizzazione di un progetto molto divertente: dei semplici giochi di luce con Arduino. Il progetto utilizza pochi elementi (LED, resistenze, interruttori, ed ovviamente Arduino), e consente un primo approccio con la scheda elettronica. Passa, inoltre, in rassegna tutti gli steps da seguire prima di cimentarsi nella realizzazione di un qualunque progetto: dall’idea di base, allo schema circuitale (impareremo quale software utilizzare allo scopo, Fritzing per essere più precisi), fino all’implementazione del software per il micro-controllore.

 

L’idea di base

 

Passiamo al vivo dell’articolo, esponendo l’idea alla base del progetto: tre LED di colore rosso, verde e blu, vengono adoperati in sincrono per generare dei simpatici giochi di luce. Sfruttando l’interpretazione elettromagnetica della luce, si capirà come i tre colori “basici” (il rosso, il verde ed il blu) consentano di generare una luce bianca, stesso principio utilizzato per la generazione di luci stroboscopiche. Tali luci sono impiegate non solo per scopi ludici, ma anche in ambiti professionali come nell’esplorazione subacquea.

Il progetto mostra come sia possibile accendere e spegnere LED ad intervalli di tempo prestabili e ravvicinati, variandone la luminosità, concetti molto importanti e che torneranno utili quando inizieremo a parlare di controllo dei motori in continua.

Non abbiate timore se fino ad ora alcune cose non vi sono molto chiare, perché saranno illustrate nel dettaglio in corso d’opera, e negli articoli che seguiranno. Ciò consentirà di creare delle solide basi, che porteranno a progetti via via sempre più complessi e divertenti.

 

I componenti e lo schema circuitale

Chiari i principi che sono alla base del progetto, affrontiamo adesso il discorso relativo ai componenti da utilizzare per la sua messa in opera. Essi sono riassunti di seguito (per chi avesse già acquistato lo starter kit, non vi è la necessità di acquistare nient’altro):

Analizziamo singolare i componenti elencati, spiegandone l’utilizzo all’interno del progetto.

Le tre resistenze da 220 Ω sono fondamentali per l’accensione dei LED, e per l’acquisizione del segnale proveniente dalla pressione dell’interruttore: consente di decrementare l’intervallo temporale che separa l’accensione dallo spegnimento dei LED. La presenza dell’interruttore consente, dunque, non solo di osservare con mano come la diminuzione dell’intervallo temporale che separa l’accensione dallo spegnimento, ma anche di capire come è possibile gestire gli interrupt (argomento del prossimo articolo) con Arduino.

In Figura 1 e 2 sono riportati i rispettivi schemi elettrico e dei collegamenti sulla breadboard. Il sistema è alimentato via USB, utilizzando un semplice PC.

Figura 1: Schema elettrico.

Figura 1: Schema elettrico.

 

Figura 2: Schema collegamenti sulla breadboard.

Figura 2: Schema collegamenti sulla breadboard.

 

Molta attenzione deve essere posta nella fase di cablaggio dei LED: se l’anodo (il terminale con il segno +) e l’anodo (il terminale con il segno -) vengono invertiti, per quanto il resto possa essere corretto, il sistema non funzionerà mai. Per evitare l’insorgere di queste problematiche, i LED sono contraddistinti dall’avere un terminale più lungo dell’altro, come riportato in Figura 2, basta seguire lo schema per capire come inserirli correttamente sulla breadboard.

 

Il software

In questa sezione andremo a descrivere il software che consente il funzionamento dell’intero sistema, allegato al termine dell’articolo per i nostri lettori.

Per chi non avesse mai visto uno script per Arduino, nella prima parte del codice vengono definite le variabili globali: le variabili che hanno visibilità all’interno di tutto il software, e che posso essere gestite da funzioni esterne (aspetto chiarito nel corso dei successivi articoli). In poche e semplici parole, all’interno di questa sezione allocate le variabili di cui vogliamo conservarne lo stato, ed eventualmente agire sulle stesse. Tale operazione diventa fondamentale quando si vuole conservare il contenuto all’interno di operazioni cicliche (for, while, do while).

La variabile tempo costituisce il valore iniziale dell’intervallo di tempo che trascorre tra l’accensione e lo spegnimento dei LED. Al contrario, i due define fissano il valore di due costanti: il valore della costante con cui sarà decrementato tempo ad ogni pressione dell’interruttore; la seconda, invece, indica il pin di interrupt (su Arduino UNO il pin 2 indica l’interrupt 0) catturato dalla funzione decrementa: tale funzione decrementa la variabile tempoDiAttesa, fino al minimo raggiungibile per poi riportarlo al suo valore iniziale alla successiva pressione dell’interruttore.

A questo si passa a definire quale saranno i pin di Arduino che saranno utilizzati per acquisire i segnali in ingresso, e quali invece saranno impiegati per i segnali di uscita. Ciò è possibile utilizzando la funzione pinMode(). Mentre, la funzione attachInterrupt() consente di definire su quale pin arriverà il segnale che genererà un interrupt (interruzione).

La sezione void loop() racchiude la porzione di software che sarà eseguita ciclicamente, sino allo spegnimento del sistema di controllo. Il codice semplicemente accende e spegne i LED, il tempo tra accensione e spegnimento è legato dalla variabile tempoDiAttesa. Per la regolazione dell’intensità luminosa si utilizza la funzione analogWrite(), in cui il valore 0 equivale a spento mentre 255 a massima intensità luminosa.

 

Conclusioni

L’articolo ha consentito di progettare un’applicazione relativamente semplice, ma che mette in luce i rudimenti che è necessario conoscere per intraprendere una qualunque applicazione con questo sistema di controllo.

Ricordate che lo staff è disponibile per commenti ed integrazioni dell’articolo sul forum (Click QUI)

 

Allegati

Sketch Arduino

 

Leave a Reply

Your email address will not be published. Required fields are marked *

*