In questa guida vedremo come controllare un led RGB indirizzabile. Collegheremo il led al microcontrollore, realizzeremo il codice e analizzeremo i comandi che permettono l’accensione, il cambio colore, l’intensità della luce ed un eventuale lampeggio. Il led utilizzato in questa guida possiede un chip di controllo WS2812B, ma la guida è applicabile a tutti i led indirizzabili che hanno un chip di della famiglia WS28XX.

Materiale hardware

Arduino Uno
Cavi Dupont
Led WS2812B
Saldatore

Materiale software

 

Procedura   

Iniziamo installando la libreria Adafruit Neopixel nell’IDE di Arduino, che permetterà il controllo del led. Apriamo l’IDE di Arduino, andiamo su “Sketch”, successivamente su “#include libreria”, poi gestione librerie ed in “filtra la tua ricerca” scriviamo “Adafruit Neopixel”, selezioniamo la libreria e clicchiamo installa.

 

Fatto ciò, passiamo all’hardware. Per prima cosa bisogna saldare sui 3 pin del led indirizzabile i cavi dupont: precisamente ai pin: VIN, GND e DIN.

 

Dopodiché sarà necessario collegare i 3 fili, che abbiamo appena saldato, all’Arduino:

  • il filo collegato al pin VIN sul LED andrà collegato al pin 5V dell’Arduino;
  • il filo del pin GND andrà collegato al pin GND di Arduino;
  • infine, il pin DIN lo collegheremo a qualsiasi pin digitale dell’Arduino, in questo esempio utilizzeremo il numero 6.

 

Dopo aver accertato di aver collegato tutto correttamente, colleghiamo l’Arduino tramite USB al nostro computer, creiamo un nuovo sketch sull’IDE di Arduino e incolliamo il seguente codice.

#include <Adafruit_NeoPixel.h>  //Utilizza libreria Neopixel di Adafruit

#define PIN 6 //A quale pin è collegato il nostro led
#define LUN 1 //Lunghezza striscia led (In questo caso 1)

//Creiamo l'oggetto Neopixel chiamato LED
Adafruit_NeoPixel led = Adafruit_NeoPixel(LUN, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  led.begin(); //Prepara i dati da inviare al led
  led.show(); //Invia i dati al led (al momento nulla, quindi verra spento.
}

void loop() {
  led.setBrightness(255);
  led.setPixelColor(0, 255, 255, 255); //Imposta il colore al nostro led
  led.show();
  delay(1000);
  led.setBrightness(0);
  led.show();
  delay(1000);
}

 

Personalizzazione

Adesso analizziamo le varie parti del codice in modo da permettere la personalizzazione dello stesso.

 

#include <Adafruit_NeoPixel.h>

Serve ad includere la libreria scaricata in precedenza e a sfruttare le sue funzioni.

 

#define PIN 6

Definisce il pin a cui il led è collegato. In questo esempio abbiamo collegato il led al pin 6, ma nel caso lo avessimo collegato ad un altro pin digitale, il numero va sostituito con il numero del pin al quale lo abbiamo collegato

 

#define LUN 1

Definisce quanti led devono essere controllati dall’Arduino. In questa guida controlleremo un solo led quindi il valore da lasciare sarà 1. (Per il controllo di più led o di una striscia di led indirizzabili leggi questa guida)

 

Adafruit_NeoPixel led = Adafruit_NeoPixel(LUN, PIN, NEO_GRB + NEO_KHZ800);

Crea l’oggetto di tipo NeoPixel, che in questo caso noi chiamiamo “led”. Come parametri della funzione troviamo il numero di led da controllare (LUN), il pin dove il led è collegato (PIN) e il resto dei parametri che servono ad indicare alla libreria che tipo di chip di controllo il nostro led utilizza e la frequenza di trasmissione.

 

led.begin();

Prepara i dati da inviare al nostro led e inizializza l’oggetto “led” creato in precedenza.

 

led.show();

Invia il segnale al led. Siccome non abbiamo impostato nessun colore, il led verrà spento. Nel nostro caso è importante per resettare il colore del led nel caso ne fosse già stato impostato un altro. Ad esempio se il led è impostato per essere rosso e impostiamo successivamente il colore blu, senza prima inserire questa riga, il blu si sommerà al rosso diventando viola.

 

led.setPixelColor(0, 255, 255, 255);

Imposta il colore al led, in questo caso bianco. L’istruzione può essere spiegata in questo modo:

led.setPixelColor(Indirizzo led, Rosso, Verde, Blu)

Per “indirizzo led” indichiamo il led al quale impostare il colore. Lo 0 imposterà il colore del primo led, l’1 del secondo e così via. Ma in questo caso lasciamo 0 poiché dobbiamo impostare un solo led che naturalmente è anche il primo. Rosso, Verde e Blu sono valori che vanno da 0 a 255, incrementando e decrementando si creano diverse combinazioni di colori. Puoi utilizzare la tabella presente QUI per scegliere il colore e poi copiare i valori R, G e B al posto dei 255.

 

led.setBrightness(255);

Permette impostare il livello di luminosità del led, il valore va da 0 a 255. Con 255 impostiamo la luminosità al massimo, mentre con 0 la luminosità sarà al minimo e quindi spento.

 

delay(1000);
 led.setBrightness(0);
 led.show();
 delay(1000);

La riga “delay(1000)” farà aspettare l’Arduino 1000 millisecondi (1 secondo) prima di eseguire la prossima istruzione, in questo modo riusciamo a far lampeggiare il led diminuendo e incrementando la luminosità. In questo esempio abbiamo impostato come luminosità nel parametro precedente 100, mentre nell’attuale 0, creando un lampeggio ogni secondo. Possiamo modificare il valore 1000 per impostare il tempo desiderato tra un lampeggio ed un altro o eliminare completamente le 4 righe per non avere nessun lampeggio.

 

Conclusione

Una volta finito di personalizzare il codice secondo le proprie esigenze, basterà caricare tutto su Arduino.