Arduino, led e resistenze

Da GolemWiki.
Versione del 1 giu 2018 alle 21:28 di Giomba (discussione | contributi) (Riordinamento guida, template)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)


Di solito in programmazione, per provare un nuovo linguaggio, il primo codice che si scrive è l'Hello World, un programma che non fa altro che scrivere il messaggio "Ciao Mondo". L'equivalente su Arduino è l'Hello Blink: far lampeggiare un led.

L'elettronica e i piedini

Un led è quasi come una lampadina, alimentandolo si accende di un determinato colore. Le particolarità di questo sono:

  • bassa tensione e corrente richiesta, infatti i comuni LED 'non di potenza (che si trovano anche all'interno dei case dei computer) sopportano una corrente massima di 30 mA, e superandola si rischia di bruciarli. La tensione varia invece in base al colore, e di solito vale il seguente schema; nonostante ciò sono molto luminosi, e si trovano sempre più spesso in giro.
Colore Tensione [V]
Infrarosso 1.3
Rosso 1.8
Giallo 1.9
Verde 2.0
Blu 3.5
File:Led-terminali.gif
I due terminali del led, e il relativo simbolo
  • singola direzione di alimentazione: il LED è acronimo di Diodo ad Emissione Luminosa, e il diodo è un componente che consente il flusso i corrente in un singolo verso; quindi il led avrà un polo positivo, l'anodo, che va verso una zona di potenziale (tensione) maggiore, e un polo negativo, il catodo, che va verso massa (o zona di potenziale minore). I due piedini si distinguono perché hanno lunghezza diversa, e il catodo è quello più corto (a meno che il LED non sia recuperato da una scheda saldata, in quel caso i piedini sono stati ovviamente tagliati alla stessa dimensione), inoltre la testa in plastica presenta un taglio dalla parte del catodo, come visibile in figura.
Resistenze in vari tagli

Per collegare questo componente alla scheda bisogna prestare queste particolari attenzioni: la scheda lavora ad una tensione di 5V, circa il triplo di quella di un LED rosso. Fra lui e la sorgente di tensione si mette una resistenza, componente che limita la corrente trasformandola in calore. Il valore della resistenza necessaria si trova attraverso la legge di Ohm, che lega appunto tensione (V), corrente (I), e resistenza (R).

V = I x R

Nel circuito abbiamo la sorgente di tensione a 5v, la resistenza e il led (per esempio di colore rosso). Sul LED cade una tensione di 1.5V, secondo la tabella, quindi sulla resistenza cadranno 5V-1.5V = 3.5V. Inoltre vogliamo mantenere la corrente a 20mA (0.02A), quindi possiamo applicare la legge di Ohm sulla resistenza:

3.5V = 0.02A x R     R = 3.5V / 0.02A = 175 Ω

Il valore reperibile sul mercato è di 180 Ω, poco di più ed è accettabile. In negozio verrà chiesto anche un'altro parametro: la potenza; è quanta corrente e tensione la resistenza può sopportare, e i tagli di uso comune sono da 1/8 di Watt, 1/4 W, 1/2 W e 1 W. In questo caso, secondo la formula P = V x I = 3.5 V * .0.2A = 0.07 W vanno benissimo tutte, perché dissipa una potenza veramente esigua.

La programmazione

Il linguaggio C++ di Arduino contiene degli adattamenti per poter interagire con l'hardware. La struttura base richiede le due funzioni void setup() e void loop(): nella prima si scrivono i comandi che devono essere eseguiti solo una volta, all'accensione della scheda, mentre ciò che è scritto nel loop viene eseguito ciclicamente finché non si toglie l'alimentazione.

blink.ino
#define LED1 13
#define LED2 12
void setup() {
	pinMode(led1,OUTPUT);
	pinMode(led2,OUTPUT);
}
void loop() {
	digitalWrite(led1,HIGH);
	digitalWrite(led2,LOW);
	delay(500);
	digitalWrite(led1,LOW);
	digitalWrite(led2,HIGH);
	delay(500);
}

Solitamente si memorizzano come costanti i valori dei piedini utilizzati, in modo da avere un identificatore per quel pin e non dover modificare tutto il programma ogni volta che si cambiano i collegamenti; poi con pinMode impostiamo se usare un pin come input o come output. Le uniche funzioni che servono per i led sono digitalWrite e delay(500). Con la prima si imposta lo stato dei piedini: HIGH o LOW. digitalWrite(led1,HIGH);, ad esempio, imposta lo stato di led1, ovvero il pin 13, a HIGH: su quel piedino la tensione sarà di 5v. delay(500), invece, è una pausa di 500 millisecondi (mezzo secondo).