[approfondimento] ESP01 (ESP8266) : Documentazione NeoPixel in Italiano! 4.93/5 (15)

Ti piace questo articolo? Condividilo dove vuoi!

Cosa sono i Neopixel ?

Neopixel è un tipo di led, comunemente RGB, che integra al suo interno un controller digitale microscopico che permette di gestire il led con un filo soltanto. La particolarità dei Neopixel è che può essere collegato in serie e ogni led della serie può essere controllato separatamente, in modo semplicissimo tra l’altro! 😍

Per usare i Neopixel basta la libreria Adafruit_Neopixel.h che potete scaricare comodamente e direttamente dell’Ide di Arduino.

1. Neopixel su ESP01

Per utilizzare Neopixel su ESP01 potete avvalervi di questo modulo aggiuntivo dove alloggiare comodamente la scheda :

Potete acquistare il prodotto da questo link e all’interno del pacchetto troverete già un ESP01 da 1Mb incluso! Il modulo Neopixel per ESP01 permette di alimentare a 5V sia i led che la schedina tramite degli appositi pin in un colpo solo.

2. La libreria e il codice

Potete scaricare direttamente dall’Ide di Arduino la libreria per Neopixel :

Una volta installato il pacchetto della libreria potete aggiungere la libreria al vostro codice con :

#include <Adafruit_NeoPixel.h>

Successivamente configuriamola in questo modo :

Adafruit_NeoPixel neopixel(numero dei led, pin da controllare, NEO_GRB + NEO_KHZ800);

Quindi nel nostro caso, visto che stiamo usando ESP01 con il suo modulo dedicato da 12 led e il pin che andremo a comandare sarà il pin GPIO2, modifichiamo il codice di configurazione cosi :

Adafruit_NeoPixel neopixel(12, 2, NEO_GRB + NEO_KHZ800); 

Iniziamo con inserire all’interno del setup() due comandi importanti per pulire la linea di led alla prima accensione :

neopixel.begin();

E nel loop() inserire il comando che pulirà continuamente la serie di led :

neopixel.clear();

subito dopo possiamo iniziare ad accendere un led, vediamo intanto di capire come accendere un determinato led e potete farlo con questa linea di codice :

neopixel.setPixelColor(x, neopixel.Color(255, 255, 255));

Questo codice accenderà il led x (impostato da 1 a 12) con il colore bianco, quindi se volessimo accendere il led numero 4 della linea possiamo impostarlo in questo modo :

neopixel.setPixelColor(4, neopixel.Color(255, 255, 255));

successivamente per far “apparire” il led scelto dobbiamo completare con il codice :

neopixel.show();

Abbiamo finito, possiamo caricare il codice per testarne il corretto funzionamento :

E se volessimo accenderli tutti insieme ? 😍 In tal caso abbiamo bisogno di un ciclo for :

for(int cur_led = 0; cur_led > 12; cur_led++) {
neopixel.setPixelColor(cur_led, neopixel.Color(255, 255, 255));
}

E quindi il codice sarà modificato in questo modo, e avremo un risultato del genere :

3. I colori

Su NeoPixel è possibile cambiare i colori tramite questa riga di codice :

neopixel.setPixelColor(x, neopixel.Color(255, 255, 255));

La parte del codice di interesse è la seguente :

neopixel.Color(255, 255, 255)

e all’interno delle parentesi tonde abbiamo i valori per R(red), G(green) e B(blue) separati da una virgola. Per realizzare le nostre tonalità possiamo usare un sito come questo, che ci restituisce i valori che ci servono selezionando il colore desiderato.

Mettiamo il caso di usare 3 led differenti, per esempio il led 1, 2 e 3 e di colorarli con 3 colori differenti.

Usiamo i colori rosso, verde e blu, quindi selezioniamo dal sito i colori desiderati e creiamo 3 righe di codice separate in questo modo :

neopixel.setPixelColor(1, neopixel.Color(255, 0, 0)); //per il led il rosso
neopixel.show();
neopixel.setPixelColor(2, neopixel.Color(0, 255, 0)); //per il led verde
neopixel.show();
neopixel.setPixelColor(3, neopixel.Color(0, 0, 255)); //per il led blu
neopixel.show();

Avrete il codice in questo modo e successivamente dovreste ottenere il risultato mostrato :

Con i metodi mostrati prima sarà possibile accendere anche tutti i led di un colore unico o come vedremo tra poco sarà possibile creare dei giochi di luce.

4. Spegnere i led

Se è vero che è possibile colorare un led è possibile anche spegnerlo con la stessa funzione che utilizzate per colorarlo, ovvero :

neopixel.setPixelColor(x, neopixel.Color(0, 0, 0));

infatti, come potete notare, basterà impostare i valori di R, G e B a 0 per spegnere il led.

Quindi se volessimo far lampeggiare il led 1 di colore rosso non ci resta altro che scrivere il codice che segue :

neopixel.setPixelColor(1, neopixel.Color(255, 0, 0)); //accendi il primo led rosso
neopixel.show();
delay(1000);
neopixel.setPixelColor(1, neopixel.Color(0, 0, 0)); //spegni il led
neopixel.show();
delay(1000);

5. Giochi di luce

Con i nostri NeoPixel possiamo creare dei Giochi di luce e per esempio far muovere un led acceso sull’intera linea con un ciclo for :

for(int cur_led = 0; cur_led < 12; cur_led++) {
neopixel.setPixelColor(cur_led, neopixel.Color(255, 0, 0)); //accendi il led corrente
neopixel.show();
delay(100);
neopixel.setPixelColor(cur_led, neopixel.Color(0, 0, 0)); //spegni il led corrente
neopixel.show();
delay(100);
}

ottenendo questo risultato :

O nel senso opposto invertendo il ciclo for :

for(int cur_led = 12; cur_led > 0; cur_led--) {
neopixel.setPixelColor(cur_led, neopixel.Color(255, 0, 0)); //accendi led corrente
neopixel.show();
delay(100);
neopixel.setPixelColor(cur_led, neopixel.Color(0, 0, 0)); //spegni led corrente
neopixel.show();
delay(100);
}

Oltre a queste animazioni semplici sarà possibile creare dei codici più complessi come questo :

for(int cur_led = 12; cur_led > 0; cur_led--) {
neopixel.setPixelColor(cur_led, neopixel.Color(255, 0, 0)); //primo step
neopixel.show();
delay(50);
}
for(int cur_led = 0; cur_led < 12; cur_led++) {
neopixel.setPixelColor(cur_led, neopixel.Color(0, 255, 0)); //secondo step
neopixel.show();
delay(50);
}
for(int cur_led = 12; cur_led > 0; cur_led--) {
neopixel.setPixelColor(cur_led, neopixel.Color(0, 0, 255)); //terzo step
neopixel.show();
delay(50);
}

ottenendo un’animazione bellissima di questo tipo :

Bè, che dire ? L’uso di questi led è legato alla vostra fantasia e all’innesto di cicli for e delay per creare dei bei giochi di luce 😁😁😁

Valuta questo articolo, è anonimo e non richiede registrazioni!

Avatar photo

Redazione Filo Connesso

Siamo un gruppo di ragazzi appassionati di Informatica, elettronica e robotica. Abbiamo creato Filo Connesso per offrire materiale educativo e informativo dedicato ai nostri settori di interesse.


Scansiona il QRCode per leggerlo sul cellulare!

Scansiona il QRCode con la nostra applicazione ufficiale per leggere l'articolo sul tuo smartphone Android! Scarica l'ultima versione


SPONSORIZZATO

Potrebbero interessarti anche...

2 risposte

  1. Angelo ha detto:

    Ciao, complimenti per il tutorial. Volevo sapere se è possibile aggiungere un comando di partenza tramite bottone

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *