Il sito per chi ama smanettare con Arduino, Raspberry Pi & Co.
Arduino e Led
by

Oltre il pin 13, impariamo ad usare gli altri pin digitali di Arduino

Arduino e Led, Introduzione

Nel nostro primo progetto arduino, abbiamo fatto lampeggiare un led collegando un pin direttamente ad un uscita digitale di Arduino e l’altro direttamente a massa del circuito (polo negativo).

Questo va bene per la caratteristica del pin 13 di Arduino: il pin 13 è un pin dalle caratteristiche particolari che Arduino ci offre per arrivare più velocemente ai nostri primi risultati: non necessita di configurazione.

Normalmente però sopratutto quando i led da attivare sono più di uno, dobbiamo inserire una resistenza per stabilire correttamente la corrente che deve passare sul nostro diodo per una corretta illuminazione ed evitare di bruciare il led e/o le porte di Arduino (il nostro pin 13 è equipaggiato di una resistenza di 1 kOhm in serie, oltre ad essere accoppiato ad un piccolo led presente nella board che si illumina in base dello stato del pin).

Arduino led pin 13
Il pin13 ha un led che ne mostra lo stato integrato nella scheda

Se togliamo il led ed avviamo arduino il nostro programma infatti funzionerà lo stesso e potremo seguirne il funzionamento (il lampeggiamento) sul led montato nella scheda.

Se l’inserimento viene fatto quindi su altri pin, che non sono il 13, è necessario inserire una resistenza di protezione altrimenti, anche se non brucieremo magari il led, ne ridurremo drasticamente il periodo di vita.

resistenze, arduino led
Alcune di resistenze

Per approfondimenti su cosa sono le resistenze e come si usano vi rimando al link di un altro articolo nel nostro sito: La Resistenza, mentre per quanto riguarda l’accensione dei nostri led abbiamo bisogno di conoscere alcuni parametri che li caratterizzano per conoscere come dimensionare correttamente il nostro resistore.

Arduino e led, Consumi

Un diodo led acceso consuma dai 15 ai 20 mA circa mentre la caduta di tensione ai suoi capi varia a seconda del colore e del tipo di diodo led, nell’elenco possiamo vedere la caduta di tensione ai capi dei led dei principali colori:

  • colore rosso: 1,8 V
  • colore giallo: 1,9 V
  • colore verde: 2,0 V
  • colore arancio: 2,0 V
  • colore blu: 3,0 V
  • colore bianco: 3,0 V

Adesso che conosciamo questi valori tramite la legge di Ohm possiamo calcolare la dimensione corretta da scegliere per il nostro resistore tramite la formula:

R = (5 – 1,8) / 0,02 = 160 Ohm

Per capire questa formula dobbiamo pensare che la tensione sul pin di Arduino nello stato HIGH è di 5 volt, di questi 5 volt 1,8 cadono ai capi del nostro led quindi per arrivare a massa (0 volt) altri 3,2 (che sono appunto 5 – 1,8…) dovranno cadere ai capi della nostra resistenza mantenendo un passaggio di corrente corretta per far lavorare il nostro diodo (0,02 A cioè 20 milliampere).

Spero di non avervi creato confusione… (in questo caso potete fare domande nei commenti e sarò felice di rispondervi ndr).

Quando dovremo comperare la nostra resistenza però non potremo chiedere una resistenza da 160 Ohm in quanto non è possibile trovarne normalmente in commercio, il valore che possiamo recuperare è di 180 Ohm ma resistenze fino ad un 1K andranno benissimo lo stesso.

Arduino e led, All’opera

Per provare queste nostre nuove conoscenze realizzeremo un piccolo circuito che potrà disporre di più di un led, nell’esempio che andiamo a vedere ne sono stati utilizzati tre, con rispettive tre resistenze da 220 Ohm (queste avevo in casa :)).

Arduino e Led
Circuito Arduino e tre Led

Il programma che andremo ad eseguire ad eseguire su questo progetto sarà una versione “un po’ potenziata” del blink.ino che abbiamo usato nel primo progetto: invece di accendere e spegnere un singolo led dovrà essere in grado di accendere i tre led uno in sequenza all’altro.

Il codice:

/* Blink 123 */

int led1 = 11;
int led2 = 10;
int led3 = 9;

void setup() {
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
}

void loop() {
  digitalWrite(led1, HIGH);   
  digitalWrite(led3, LOW);   
  delay(1000);               
  digitalWrite(led2, HIGH);
  digitalWrite(led1, LOW);   
  delay(1000);               
  digitalWrite(led3, HIGH);
  digitalWrite(led2, LOW);
  delay(1000);
}

Ad occhio nudo probabilmente riuscirete a notare come ogni istruzione sia stata ripetuta tre volte.

A differenza di blink.ino dichiariamo tre variabili (una per ogni led) ed assegnamo a queste variabili il numero del pin di uscita digitale di Arduino che utilizzeremo per pilotare il led (11, 10 e 9 nel mio caso).

Nella funzione di setup() configuriamo i tre pin indicati prima come OUTPUT (uscita) per poter accendere i led.

La funzione loop() accende un led e spegne il quello precedentemente acceso, poi attende un secondo come in blink.ino e ripete lo stesso blocco di operazioni per gli altri due led, per poi ripetersi all’infinito accendendo i tre led in maniera consecutiva.

Al primo avvio di Arduino forse avete notato che andiamo a spegnere un led che non era acceso:

digitalWrite(led3, LOW);

Non fa nulla tanto se spegniamo qualcosa che è già spento… spento rimane! Questa istruzione però sarà utile in tutti gli altri cicli dopo il primo perchè spegnerà il led 3 ovvero l’ultimo che abbiamo acceso nel loop.

Ecco il video del programma in esecuzione:

Spero vi sia piaciuto. Ciao!

makerItalia consiglia Arduino Uno R3

Ti è rimasta una domanda o un dubbio?

Iscriviti e chiedi nella community

3 commenti su “Arduino e Led

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *