Semplice Schema con Arduino e uno o più LED RGB utile a Generare tutti i Colori dello Spettro visivo…
INTRO
Un LED RGB è un led che al suo interno dispone di 3 diversi semiconduttori, ognuno in gradi di emettere un differente colore e in particolare rosso, verde e blu.
Come ben noto tutti i colori dello spettro possono essere realizzati da una combinazione dei colori fondamentali rosso verde e blu, come ad esempio accade nello schermo dei cellulari o delle televisioni dove ogni pixel in realtà e formato da tre pixel ancora più piccoli con colori verde rosso e blu.
Come ad esempio è possibile vedere dallo strumento dei colori di paint, il viola è formato da rosso per un valore di 128 e da blu per un valore di 255. Vi sono anche altri parametri come tonalità, saturazione e luminosità, ma questi non sono altro che altri modi per esprimere i colori.
È semplice con un sistema PWM variare la luminosità dei LED, e considerando che il PWM di Arduino può avere valori da 0 a 255, possiamo associare a questo valore la quantità di colore e andare a formare gli altri colori. Ad esempio settando il PWM del rosso a 128 e il PWM del blu a 255 possiamo ottenere il viola come in figura.
Questo schema utilizza 3 cicli di FOR per scansionare tra 0 e 255 i tre PWM associati ai tre colori e quindi ottenere tutte le possibili combinazioni di colore.
CODICE
Il codice è il seguente:
int LEDblu = 3; //Led blu al pin 3 int LEDrosso = 5; //Led rosso al pin 5 int LEDverde = 6; //Led verde al pin 6 int LumBlu = 0; //Valore tra 0 e 255 luminosità led Blu int LumRosso = 0; //Valore tra 0 e 255 luminosità led rosso int LumVerde = 0; //Valore tra 0 e 255 luminosità led verde void setup(){ pinMode(LEDblu, OUTPUT); //Setta pin 3 come uscita PWM pinMode(LEDverde, OUTPUT); //Setta pin 5 come uscita PWM pinMode(LEDrosso, OUTPUT); //Setta pin 6 come uscita PWM } void loop(){ for (LumVerde = 0; LumVerde < 239; LumVerde += + 16){ //PWM da 0 a 255 con incremento 16 analogWrite(LEDverde, LumVerde); //Modifica PWM Verde for (LumRosso = 0; LumRosso < 247; LumRosso += 8){ //PWM da 0 a 255 con incremento 9 analogWrite(LEDrosso, LumRosso); //Modifica PWM Rosso for (LumBlu = 0; LumBlu < 255; LumBlu ++){ //PWM da 0 a 255 con incremento 1 analogWrite(LEDblu, LumBlu); //Modifica PWM Blu delay(20); //Incrementa il Blu ogni 20mS } } } }
Si inizializzano le prime tre variabili che servono per indicare i pin dove sono connessi i pin dei LED blu, rosso e verde e poi le tre variabili che contengono il valore del PWM. Nel ciclo di setup vengono inizializzati i tre pin come uscite.
Nel ciclo continuo vi è il primo FOR che fa variare la luminosità del verde da 0 a 239 con incremento 16, all’interno di questo ciclo vi è la stringa per modificare il PWM e poi vi è il For per variare la luminosità del Rosso che va da 0 a 247 con incremento 8 e all’interno di questo secondo FOR vi è il FOR per variare la luminosità del blu che va da 0 a 255 con incremento1.
Quindi alla prima iterazione il verde è a 0, il rosso anche e il blu inizia a variare da 0 a 255 ogni 20ms. Quando si hanno tutti i valori di blu si va ad incrementare il verde, quindi si avrà verde a valore 8 e poi si ritorna di nuovo nel ciclo FOR del blu facendo variare di nuovo i valori da 0 a 255 e così via.
SCHEMA
Lo schema è il seguente:
L’alimentazione può essere USB o tramite il jack dell’alimentazione.
Può essere usato in ugual modo un LED con anodo comune o catodo, il codice non cambia, vi è solo una piccola variazione nello schema.
Considerando una corrente per ogni colore di 3mA e una tensione di 1.8V per il rosso, 2V per il verde e 3.5V per il blu servono resistenze da 470 Ohm su tutti e tre i contatti, però visto che il colore verde risulta maggiormente visibile agli occhi si usa un resistore di maggiore valore, ovvero 560 Ohm.
Il pin in comune, in questo caso il 2 ovvero l’anodo , è connesso alla tensione positiva 5V di Arduino, nel caso si usi un LED RGB a catodo comune invece il pin in comune va collegato al GND di Arduino. Se non si ha un LED RGB si possono usare tre distinti LED ma l’effetto non è uguale.
DOWNLOAD
Potete scaricare lo SKETCH per l’IDE di ARDUINO al seguente LINK!!!
ottimo