RGB

Gestire e programmare i LED RGB con Arduino UNO tramite i potenziometri

Abbiamo già imparato a programmare i led con Arduino UNO in uno dei primissimi articoli, come pure abbiamo imparato a gestire un potenziometro per controllare un servo-motore. Oggi impareremo a controllare un LED RGB utilizzando 3 potenziometri, ognuno dei quali gestirà uno rispettivamente il colore rosso, blu e verde.

Specifiche

Il LED RGB che adoperiamo oggi è il c.d. a catodo comune ed appare esternamente come un comune LED, tuttavia possiede 4 terminali, di cui solo uno è il catodo, mentre gli altri 3 gestiscono i colori rosso, verde e blu.

RGB

Questi tre terminali, corrispondenti a 3 LED posti all’interno della cupola del LED, necessitano ognuno di una resistenza da 220OHM per essere gestiti da Arduino UNO. Per poter ottenere tutti i colori, misceleremo il rosso, il verde ed il blu. Esistono altre varianti di LED RGB, come quella ad anodo comune, quindi state attenti e controllate bene quale variante state adoperando.



Collegamento

Come anticipato prima, il LED RGB necessita di 3 resistenze da 220OHM per poter collegare ogni terminale ai pin digitali di Arduino. Non useremo pin digitali comuni, ma useremo i pin PWM per modulare il segnale e miscelare così i colori. Il terminale del rosso va collegato al pin 11, il terminale del verde al pin 10, mentre il terminale del blu al pin 9. Il catodo va invece collegato al GND. Passiamo ora ai potenziometri: il pin centrale di ogni potenziometro corrisponde al pin di segnale analogico, colleghiamo quindi ognuno dei potenziometro rispettivamente ai pin A0, A1 e A2. Ricordiamo che i potenziometri utilizzati sono quelli rotativi a 10K OHM e che sono alimentabili con i 5V.

RGB

Lista componenti su Amazon:

Lista componenti su Aliexpress:



Codice

Il codice di base è molto semplice e privo di librerie. Inizieremo creando 6 variabili intere per gestire i valori rilevati dai potenziometri (p1, p2, p3) e per mappare questi valori (r, g, b) nei segnali PWM da inviare al LED con analogWrite. Nel VOID SETUP impostiamo la direzione di pin 9, 10, 11 e avviamo il monitor seriale.


int r, g, b, p1, p2, p3;

void setup() {
pinMode (9, OUTPUT);
pinMode (10, OUTPUT);
pinMode (11, OUTPUT);

Serial.begin(9600);

}

Nel VOID LOOP leggiamo i valori rilevati dalla rotazione dei potenziometri, poi mappiamo questi segnali analogici in valori da inviare ai pin PWM, infine li inviamo ai pin digitali PWM con la funzione analogWrite. Stampiamo così i valori su monitor seriale impostando un delay di 5 millisecondi.


void loop() {
p1= analogRead (A0);
p2= analogRead (A1);
p3= analogRead (A2);

r = map (p1, 0, 1023, 0, 255);
g = map (p2, 0, 1023, 0, 255);
b = map (p3, 0, 1023, 0, 255);

analogWrite (11, b);
analogWrite (10, g);
analogWrite (9, r);

Serial.print ("Rosso: ");
Serial.println (r);
Serial.print ("Verde: ");
Serial.println (g);
Serial.print ("Blu: ");
Serial.println (b);

delay (5);
}

Una volta caricato lo skecth (scaricabile QUI), basterà girare i potenziometri per variare il colore del LED.