Energia 04 - Controllo di un LED RGB

Valutazione attuale: 5 / 5

Introduzione

Nello scorso articolo abbiamo dato un’occhiata generale ai LED, resistori e all'uso della Breadboard. In questo articolo andremo ad utilizzare il LED RGB. A prima vista, il LED RGB (Red, Green, Blue), somiglia ad un normale LED, tuttavia, all'interno del LED RGB in realtà ci sono tre LED, uno rosso, uno verde ed uno blu. Controllando la luminosità di ciascuno dei singoli LED si può ottenere praticamente qualsiasi colore si voglia.

Materiale necessario

Per il nostro progetto abbiamo bisogno del seguente materiale:

  • Software Energia
  • Scheda di sviluppo LaunchPad MSP430  con MSP430G2553
  • Breadboard
  • 2 resistori da 100ohm
  • 1 resistore da 150ohm
  • 1 diodo RGB
  • Cavetti per collegare il tutto

 

Cos'è un LED RGB?

Il LED RGB al suo interno, come abbiamo detto, ha 3 LED. Questi hanno il polo positivo collegato ai 3 pin in uscita e la massa in comune (catodo comune) o il + in comune (anodo comune) come mostrato in Figura 1. A seconda del modello del LED bisogna accertarsi del fatto che si ha la configurazione a catodo o anodo comune. La posizione dei pin potrebbe cambiare anche da modello a modello, per cui è sempre bene far riferimento al data sheet del componente.



 

Figura1: Piedinatura tipica per un LED RGB (anodo comune).

Il collegamento comune del LED RGB è il secondo pin dal lato piatto del componente, come si può vedere della Figura 1.

La ragione per cui potete mescolare le quantità di luce rossa, verde e blu come mostrato in Figura 2 è perché il vostro occhio ha tre tipi di recettori (rosso, verde e blu). Giocando su questa scoperta è possibile realizzare un qualunque colore anche sui monitor televisivi, infatti ogni pixel del monitor è formato dai tre colori di tipo additivo (da non confondere con i colori primari sottrattivi giallo, ciano e magenta).

Figura 2: Sovrapposizione cromatica dei colori RGB.

Andando a variare la luminosità di ogni colore di fatto andiamo a cambiare il colore risultante che vedremo con i nostri occhi. Il modo più facile per farlo sarebbe quello di utilizzare diverse resistenze di diverso valore (oppure utilizzare resistenze variabili), ma a noi le cose facili non piacciono vero?
Fortunatamente per noi, Energia ci fornisce la possibilità di utilizzare la funzione analogWrite per controllare l'energia con la quale andremo a comandare i singoli LED.


Esempio Applicativo

Nel programma che andremo a scrivere faremo in modo che il nostro LED RGB, a distanza di 1s, passi da un colore ad un altro in maniera casuale. Andiamo a vedere come fare nello specifico. Un dettaglio dello Sketch è mostrato in Figura 3.


Figura 3: Sketch per il controllo casuale del LED RGB.

Lo Sketch ha una struttura leggermente diversa da quella vista negli esempi precedenti, dato che man mano che prendiamo dimestichezza col programma possiamo fare piccoli passi per avere una struttura più pulita.
Come primo passaggio abbiamo inizializzato quattro variabili cosi da non dover ogni volta andare a ricordare il pin ed il valore del ritardo immesso. Questa procedura può risultare superflua agli inizi, ma poi quando si andrà a compilare programmi più complessi risulterà molto utile e veloce.

int ritardo = 1000;
int rosso = 9;
int verde = 10;
int blu = 12;

Il valore assegnato alle variabili, rosso, verde e blue rappresenta il numero del pin mostrato in Figura 4. Si è deciso di utilizzare i pin 9, 10 12 poiché andando a vedere le specifiche di ogni pin sul sito di Energia, questi pin sono dichiarati come “AnalogWrite” come è possibile vedere in Figura 4. La differenza tra AnalogWrite e DigitalWrite andremo a descriverla nel prossimo articolo in maniera più dettagliata.


Figura 4: Specifiche pin per MSP430G2553 ed Energia.

Come secondo passo si inizializzato i vari pin come uscite, come è possibile vedere nel codice seguente:

void   setup   ( ) {
        pinMode (rosso, OUTPUT);
        pinMode (verde, OUTPUT);
        pinMode (blu, OUTPUT);
}

Avendo precedentemente associato alle variabili rosso, verde e blu dei valori, ora non dobbiamo specificare il pin, ma basterà utilizzare le variabile per far intendere al compilatore che vogliamo utilizzare il relativo pin.

A questo punto andremo a scrivere il programma vero e proprio:

void loop ( ) {
    analogWrite (blu, random(255));
    analogWrite (rosso, random(255));
    analogWrite (verde, random(255));
    delay(ritardo);
}

In questo programma si è utilizzato la funzione “random” al fine di generare un valore casuale.
Come abbiamo detto in precedenza il LED RGB ha al suo interno 3 LED; con la funzione “analogWrite” possiamo far assumere all'uscita un valore intermedio tra il classico 0 (spento) ed 1 (acceso) andando a settare dei valori che in questo caso possono variare da 0 a 254 (nel caso in cui avessimo voluto che la scelta venisse fatta a partire da 5, bastava mettere nella funzione random il valore (5, 255) al posto di (255)).

Per ora possiamo pensare a questi valori come sfumature di grigio tra il nero (0) ed il bianco (1). Utilizzando la funzione “analogWrite” in combinazione con “random”, daremo alle tre uscite dei valori casuali cosi da impostare ad una diversa intensità i tre LED all'interno del LED RGB ed ottenere un unico colore. Dopo l'assegnazione del valore di uscita aspetteremo un secondo per poi riassegnare di nuovo diversi valori alle uscite ed ottenere cosi un diverso colore.

Una volta aver sistemato il nostro Sketch procederemo a montare il LED RGB sulla nostra Breadboard   come mostrato in Figura 5.
Se tutto è andato a buon fine, una volta  programmato il nostro LaunchPad ed averlo collegato alla BreadBoard otterremo un bell'arcobaleno!!

 


 

Figura 5: Collegamenti dei componenti tra la scheda LaunchPad e la Breadboard.

Nel prossimo articolo andremo a descrivere in maniera più dettagliata le funzioni analogWrite e digitalWrite mediante alcuni esempi pratici.


Autore : Andrea Valeriani


Bibliografia


You don`t have permission to comment here!

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login