Arduino per tutti parte sesta: il semaforo è servito parte seconda (un led è meglio di tre)

Ed eccoci di nuovo qui, con la nostra puntata sull’uso di Arduino.
La volta precedente abbiamo visto come collegare alla nostra scheda Arduino un led e accenderlo. Ma il nostro obiettivo è costruire un prototipo di semaforo e collegare alla scheda di prototipazione tre led colorati, sebbene apparentemente semplice, rende più complessa la programmazione dei led.

Per questa ragione, per realizzare il nostro prototipo useremo un altro tipo di led, un led RGB. Come dice il nome stesso, il led è costituito in realtà da tre singoli led, uno rosso (Red), un verde (Green) e uno blu (Blue). Controllando la luminosità di ciascun led è possibile ottenere praticamente qualsiasi gradazione di colore.
Ma ecco i nostri ingredienti:
1) la scheda Arduino Uno, ovviamente,
2) un led RGB (fig. 1),

Led RGB
Fig. 1

3) tre resistenze da 220 Ω, una per ogni colore (fig. 2),
Resistenze da 220 Ohm
Fig. 2

4) quattro cavi connettori (fig. 3),
Cavi connettori
Fig. 3

5) una breadboard (fig. 4).
Breadboard
Fig. 4

Il Led RGB ha una struttura differente, rispetto al led visto nella puntata precedente.
I Led RGB osseggono 4 terminali e si possono presentare in due tipi di configurazione:

1 anodo e 3 catodi (RGB ad anodo comune)
3 anodi e 1 catodo (RGB a catodo comune)
L’immagine che segue (Fig. 5) rappresenta un led del primo tipo

Fig. 5

La mescolanza dei tre colori dà luogo ad una luce di un determinato colore che dipende dall’intensità di ciascuno dei tre colori originari (si veda la composizione RGB in fig. 6)

Fig. 6

Se si imposta la stessa luminosità per tutti i tre LED , il colore della luce sarà bianco. Se si spegne il LED blu, in modo che solo i LED rosso e verde abbiano la stessa luminosità, la luce apparirà di colore giallo, e così via, secondo le regole della teoria dei colori.
Si può controllare la luminosità di ciascuna delle parti rosso, verde e blu del LED separatamente, rendendo possibile mescolare qualsiasi colore vogliamo.
Le resistenze vanno usate per regolare la corrente.
In serie ad ogni LED sarà inserita una resistenze che consentirà di regolare la corrente circolante nel diodo (Fig. 7).

Fig. 7

Passiamo ora all’assemblaggio.
Il LED RGB ha quattro conduttori. C’è un conduttore che va al collegamento positivo di ciascuno dei LED all’interno del pacchetto e un unico cavo collegato a tutti i tre lati negativi di ciascun LED singolo. Occorre collegare il led RGB ai pin della scheda attraverso le resistenze e mediante i cavetti, come in figura 8.

Lo schema di assemblaggio del nostro semaforo
Fig. 8

Questo è il codice per far funzionare il led.
//www.elegoo.com
//2016.06.13

// Define Pins
#define RED 3
#define GREEN 5
#define BLUE 6

#define delayTime 10 // fading time between colors

void setup()
{
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
digitalWrite(RED, HIGH);
digitalWrite(GREEN, HIGH);
digitalWrite(BLUE, HIGH);
}

// define variables
int redValue;
int greenValue;
int blueValue;

// main loop
void loop()
{
redValue = 255; // choose a value between 1 and 255 to change the color.
greenValue = 0;
blueValue = 0;

analogWrite(RED, 0);
delay(1000);

for(int i = 0; i < 255; i += 1) // fades out red bring green full when i=255 { redValue -= 1; greenValue += 1; analogWrite(RED, 255 - redValue); analogWrite(GREEN, 255 - greenValue); delay(delayTime); } redValue = 0; greenValue = 255; blueValue = 0; for(int i = 0; i < 255; i += 1) // fades out green bring blue full when i=255 { greenValue -= 1; blueValue += 1; analogWrite(GREEN, 255 - greenValue); analogWrite(BLUE, 255 - blueValue); delay(delayTime); } redValue = 0; greenValue = 0; blueValue = 255; for(int i = 0; i < 255; i += 1) // fades out blue bring red full when i=255 { redValue += 1; blueValue -= 1; analogWrite(RED, 255 - redValue); analogWrite(BLUE, 255 - blueValue); delay(delayTime); } }

Diamo un’occhiata più da vicino al codice.
Innanzitutto, occorre dire ad Arduino quali pin sono connessi a quali led.
Lo si può fare definendo i singoli led con il comando #define, seguito dal nome del led (RED, GREEN o BLUE) e il numero del pin (3,5 o 6):
#define RED 3
#define GREEN 5
#define BLUE 6

Ricordiamoci che i pin si contano dall’esterno e partono dallo 0.

Ora occorre settare l’accensione dei tre led. Nella void setup() abbiamo scritto:

{
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
digitalWrite(RED, HIGH);
digitalWrite(GREEN, HIGH);
digitalWrite(BLUE, HIGH);
}

pinMode(NOME_LED, OUTPUT) attiva il collegamento esterno del pin della scheda Arduino, mentre digitalWrite(NOME_LED, HIGH), come abbiamo visto nella puntata precedente, indica alla scheda di inviare corrente al LED.

Ora a noi serve che i led si accendano con differenti valori, quindi occorre stabilire delle variabili da modificare in corso d’opera:
int redValue;
int greenValue;
int blueValue;

Siccome sono certamente valori numerici, usiamo per definire le variabili int (integer, cioè numero intero).

E anche per questo progetto è tutto.
Provate a realizzare il nostro semaforo, modificando i valori dei colori e alla prossima.

Lascia un commento

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