Arduino (2) – Un led tutto nostro
Nel precedente articolo abbiamo colleagato un led alla scheda Arduino, facendolo lampeggiare. Se il led prima lo abbiamo “brutalmente” inserito sulla scheda, adesso vogliamo spostarlo in un circuito separato, utilizzando una breadboard, in modo da gettare le basi per la realizzazione di circuiti più complessi.
Quando colleghiamo una batteria ad una lampadina, la lampadina si accende. Se mettiamo un’interruttore tra la lampadina e la batteria, la lampadina può essere accesa, quando il circuito è chiuso (interruttore abbassato, mette in contatto i fili a cui è collegato), o spenta, se il circuito è aperto (interruttore alzato, scollega i fili a cui è collegato).

Quello che succede, lo possiamo guardare in analogia al sistema circolatorio: il cuore pompa il sangue che scorre nelle vene e arriva dove c’è bisogno. Per noi, il voltaggio (la differenza di potenziale) è il cuore, la corrente è il sangue. Quindi, la differenza di potenziale tra i due morsetti della batteria mette in moto gli elettroni, che circolano nel filo; gli elettroni passano nel filamento della lampadina, rendendolo incandescente; ecco la luce. Se l’interruttore è OFF, la corrente non circola (non è pompata dalla differenza di potenziale) e la lampadina non si accende.
Per il nostro primo esempio, la scheda Arduino rappresenta uno costoso interruttore (n.b. costoso solo rispetto agli interruttori): è il software che decide se il flusso di elettroni c’è o non c’è.
Cosa ci serve per questo esperimento?
- un resistore da 220 Ohm (rosso, rosso, marrone)*
- un led
Utilizzeremo una breadboard, ovvero una scheda fatta di tanti buchi dove andare ad infilare i nostri componenti e connettori. Una breadboard, vista in verticale, è una matrice di fori, etichettati da lettere (colonne) e numeri (righe), con due linee comuni + e – disposte sui due lati.

- I due insiemi di colonne “abcde” e” fghij”, sono separati e indipendenti tra di loro (non collegati).
- Le righe sono indipendenti tra loro.
- Le colonne di una stessa riga sono collegate tra loro.
- Per le colonne + e – (di alimentazione) le righe sono collegate tra loro e indipendenti dal resto della scheda.
Le breadboard sono ottime per la prototipazione, poiché solderless, ovvero non hanno bisogno di saldature, ma funzionano ad incastro; per problemi di dissipazione della potenza, oltre che di costo, non è consigliabile usarle altrimenti.
Ricordiamo di seguito lo sketch utilizzato nel precedente esperimento.
int intervallo = 1000;
int pin_led = 13;
void setup()
{
pinMode(pin_led, OUTPUT);
}
void loop()
{
digitalWrite(pin_led, HIGH);
delay(intervallo);
digitalWrite(pin_led, LOW);
delay(intervallo);
}
Stavolta il pin del led può essere qualunque, poichè la corrente passerà attraverso un resistore (io per comodità utilizzo ancora il PIN 13). Dobbiamo utilizzare un resistore: un resistore è un qualcosa che limita il passaggio della corrente, è come se ci fosse un secchio con un buco sul fondo, che fa passare una quantità d’acqua minore di quella che fluisce dall’alto, e serve per non far bruciare il nostro led. Un led, altro non è che un diodo, ovvero un qualcosa in cui la corrente è costretta ad andare in un senso solo e non può tornare indietro. Maggiore sarà la resistenza del resistore, più piccolo sarà il buco del secchio, minore sarà l’intensità della luce.
Nelle due foto che seguono, prima e dopo il montaggio.
Se insieme alla breadboard ci sono fili già tagliati (come nello starter kit), siamo pronti, altrimenti armiamoci di tronchesino e prepariamo i fili, tagliandone pezzettini di qualche centimetro (quanto basta per stare comodi) e togliamo l’involucro di plastica dalle estremità.
Colleghiamo, aiutandoci eventualmente con una pinzetta, un filo dal PIN13 ad un foro della breadboard, ad esempio J4 (colonna J, riga 4 – non all’alimentazione); prendiamo poi il nostro resistore e colleghiamo il piedino I4 (quello accanto) con, ad esempio, per comodità, D5. Sulla stessa riga mettiamo il led, collegato a B5 (ad esempio) e alla colonna -. A questo punto colleghiamo la colonna – a GND con un filo.

Queto schema può essere replicato per tutte le uscite digitali e se usiamo uscite “analogiche” si può creare un effetto di fading (basta inserire un ciclo for con valori di intensità che vanno da 0 a 255). Di seguito la rappresentazione schematica:

Replicando lo schema, possiamo avere tre led di colore differente che si accendono uno dopo l’altro.

Per creare questo schema, ho utilizzato un programmino fatto a posta che si chiama Fritzing. Ecco lo sketch relativo al caso dei tre led:
void setup()
{
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
}
void loop()
{
led(8,500);
led(9,500);
led(10,500);
}
void led(int num, int t)
{
digitalWrite(num, HIGH);
delay(t);
digitalWrite(num, LOW);
//delay(t);
}
La funzione led() non fa altro che accendere il led sul piedino num per un tempo t, espresso in millisecondi.
* La resistenza di un resistore è espressa tramite colori. Vedi Wikipedia.


