Nell’ultimo articolo abbiamo scritto il nostro primo programma nell'IDE Arduino senza ricorrere a componenti fisici esterni.

In questo episodio invece toccheremo con mano la prima elettronica, andando a collegare ad Arduino un diodo LED esterno. Per farlo ci serviremo, come per tutti gli episodi successivi, di una breadboard, di cui adesso approfondiremo il funzionamento.

LA BREADBOARD

La breadboard è un componente indispensabile per progettare e prototipare circuiti poichè consente di effettuare i collegamenti senza far uso di saldature, quindi è bene che impariate a conoscerla nel dettaglio...

 

Lo schema di collegamento è il seguente:

A linee dello stesso colore corrispondono fori collegati tra loro.
Le linee verticali (contrassegnate da +/-) di norma vengono collegate rispettivamente ai 5V e al GND.

 

HARDWARE

Adesso mettiamo in pratica queste nozioni realizzando i collegamenti tra Arduino e il diodo LED esterno.

Occorrente:
- 1 LED (non lo avreste detto, vero ?)
- 2 jumper**
- 1 resistore da 220 ohm
** I jumper sono dei cavetti molto utili, praticamente indispensabili, nei progetti di prototipazione. Sono piuttosto corti (perfetti per l'uso che ne andremo a fare) e ne esistono di svariati colori, anche se di solito si utilizza il rosso per i collegamenti ai 5V e il nero per il GND.

Lo schema di collegamento è il seguente:

I LED

I diodi LED (Light Emitting Diode) vanno alimentati con una corrente costante polarizzata ed è per questo che si compongono di due piedini distinti:

  • Il piedino più lungo, detto anodo, va collegato ai 5V di Arduino o, come in questo caso, ad un pin digitale settato come OUTPUT.

  • Il piedino più corto invece, detto catodo, va collegato al GND (ground).

Tuttavia, per evitare che il LED subisca danni o si bruci completamente è necessario frapporre tra il catodo e il GND un resistore.

I RESISTORI

I resistori sono componenti elettrici che hanno il compito di opporre una specifica resistenza al passaggio della corrente all'interno dei circuiti.

Non approfondiremo la fisica che c'è dietro questi componenti, però è importante sapere che:
- L'unità di misura della resistenza (grandezza fisica propria dei resistori) è l'ohm, simbolo Ω.
- I resistori, a differenza dei LED, non hanno polarità, quindi non c'è distinzione tra anodo e catodo.
- I resistori che solitamente impieghiamo nei progetti con Arduino sono classificati mediante una notazione a bande di colori, che indicano il valore della resistenza; tuttavia non dovete preoccuparvi poichè, se non dovessero essere indicati esplicitamente, esistono vari tool che consentono di determinare facilmente i valori delle resistenze, appunto, in base ai colori.

Un tool molto utile è questo, oppure potete affidarvi all’immagine qui sotto:

Una domanda che sorge spontanea quando si ha a che fare con questi componenti è:
"Quale resistore scegliere ?"

Niente paura! Bisogna applicare la legge di Ohm:

                  R = DV/I

Il valore DV è dato dalla differenza tra la tensione della scheda Arduino (5 Volt) e la tensione dei LED, che varia tra 1,7 e 3,0 Volt a seconda del colore.

Il valore I invece indica la massima corrente che può passare nel LED senza che questo si bruci: solitamente si considera sicura una corrente di 15-20 mA.

In generale però, dei resistori da 220 Ω saranno validi per qualunque tipo di LED.

 

SOFTWARE

Adesso passiamo dall'hardware al software e spostiamoci sull'IDE di Arduino. Per questo episodio riprendiamo il codice dell'articolo precedente, ovvero:

void setup() {
   pinMode(13, OUTPUT);
}
void loop() {
   digitalWrite(13, HIGH);
   delay(1000);
   digitalWrite(13, LOW);
   delay(1000);

}

Se adesso volessimo modificare il valore del delay o del pin a cui è collegato il LED esterno, dovremmo agire su ogni singola istruzione e scrivere una cosa di questo tipo:

void setup() {
   pinMode(2, OUTPUT);
}
void loop() {
   digitalWrite(2, HIGH);
   delay(2000);
   digitalWrite(2, LOW);
   delay(2000);

}

Quest' operazione è molto scomoda, ed è per questo che introdurremo il concetto di variabile.

 

LE VARIABILI

Le variabili sono dei "contenitori" a cui sono associati determinati spazi di memoria.

Ogni variabile è definita da un nome e un tipo, che può essere ad esempio int (numero intero), float (numero decimale), char (carattere): li analizzeremo man mano che si presenteranno nel corso degli episodi.

Prima di essere usata, una variabile va dichiarata e inizializzata:

  • Dichiarare una variabile significa proprio specificarne il tipo e il nome.
  • Inizializzare una variabile significa assegnarvi un valore, che chiaramente deve essere compatibile con il tipo indicato in fase di dichiarazione.

Un esempio potrebbe essere:
int tempo; //dichiarazione
tempo=1000; //inizializzazione

Adesso possiamo modificare il nostro programma in modo che svolga la stessa funzione, ma facendo uso delle variabili:

 

In questa forma il codice sarà molto più leggibile, inoltre l'uso delle variabili ne facilita la manutenibilità.

Ovviamente se si tratta di poche righe di codice non si avvertirà alcuna differenza, anzi sembrerà un procedimento più macchinoso; la situazione invece cambia notevolmente se invece si ha a che fare con programmi un minimo più corposi. In ogni caso le variabili sono il fondamento di qualunque linguaggio di programmazione, quindi sarà necessario usarle!

 

VARIABILI GLOBALI E LOCALI

Bisogna fare ancora una precisazione: in questo caso abbiamo dichiarato le variabili al di fuori sia del "setup" che del "loop", e questa scelta ha un significato.

Le variabili infatti si dividono in globali e locali:

  • Le variabili globali sono visibili a tutte le funzioni presenti nel programma, quindi nel nostro caso "tempo" e "pinLed" possono essere usate sia nel loop che nel setup.
  • Le variabili locali invece sono visibili solo alle funzioni nelle quali sono state dichiarate.

Per fare un esempio:

void setup() {
}
void loop() {
   int tempo;

}

In questo caso la variabile "tempo" è visibile esclusivamente alla funzione loop, quindi non sarà possibile usarla nel "setup".

Per avere prova di ciò potreste provare a compilare (tasto Verifica) un codice in cui dichiarate una variabile "tempo" nel setup, ma la usate nel loop! (anche semplicemente assegnandole un valore). Ricevereste un errore per mancata dichiarazione della variabile.