ArduRGB è un semplice progetto per mostrare come pilotare un led RGB da Arduino.
Nel repository su GitHub sono presenti lo sketch per Arduino e un programma di esempio scritto in C# e nel forum è possibile porre domande/richieste…
Attenzione: il programma descritto di seguito prevede l’uso di un led a catodo comune, in caso sia invece ad anodo comune i valori inviati devono essere sottratti a 255
Il programma in esecuzione su Arduino riceve via seriale un messaggio composto da 3 bytes, ognuno dei quali indica l’intensità dei colori R (rosso), G (verde) e B (blu). I valori ricevuti vengono utilizzati per comandare le 3 uscite PWM (pin 9/10/11) a cui è collegato il led.
Per prima cosa, definiamo i pin a cui è collegato il led e l’array dove memorizzeremo il messaggio in fase di ricezione:
// definizione dei pin const int red_pin = 9; const int green_pin = 10; const int blue_pin = 11; // variabili per ricezione messaggio byte message[3]; int message_index;
Nel blocco setup() configuriamo la comunicazione seriale (9600 baud), i pin (come output) e i valori iniziali (led spento):
void setup() { // init porta seriale Serial.begin(9600); // pins configurati come output pinMode(red_pin, OUTPUT); pinMode(green_pin, OUTPUT); pinMode(blue_pin, OUTPUT); // iniziamo con i led spenti analogWrite(red_pin, 0); analogWrite(green_pin, 0); analogWrite(blue_pin, 0); // init puntatore posizione messaggio message_index = 0; }
Infine nel loop() attendiamo che sia disponibile un byte sulla porta seriale, lo memorizziamo nell’array e – se è il terzo byte ricevuto – inviamo i 3 valori sulle uscite PWM:
void loop() { // ricevuto nuovo byte if (Serial.available() > 0) { // lo salvo nell'array // e incremento il puntatore message[message_index] = Serial.read(); message_index++; // se ho ricevuto 3 bytes resetto il puntatore // e invio i valori if(message_index == 3) { message_index = 0; analogWrite(red_pin, message[0]); analogWrite(green_pin, message[1]); analogWrite(blue_pin, message[2]); } }
Attraverso il programma in esecuzione sul PC è possibile scegliere un colore ed inviare la sua codifica RGB attraverso una porta seriale alla scheda Arduino:
Come prototipo, ho utilizzato un led RGB piranha a catodo comune:
collegato alle 3 porte PWM di Arduino tramite delle resistenze (1Kohm va benissimo) per limitare la corrente:
Ecco il prototipo realizzato ed un filmato che ne mostra il funzionamento:



















