Esistono numerosi esempi d'utilizzo delle NeoPixel per Arduino, ma quest'oggi le utilizzeremo con la nostra ESP8266.
Striscia NeoPixel |
Prima di tutto, dobbiamo definire l'Hardware/Software necessario:
- FastLed library: per controllare le neopixel, all'inizio, si utilizzava la libreria Adafruit.
Successivamente si può utilizzare la libreria FastLed, molto più completa e versatile, anche per l'integrazione con la ESP. - Level shifter: le NeoPixel sono controllate con un segnale di controllo D0 di 5V, ricordo che la ESP genera segnali fino a 3.3V. Come risolvo?
Semplice, level shifter! In pratica, porta un segnale a 3.3V - ESP - a 5V - NeoPixel - . - Blink library: come tutti gli altri progetti del filone Blynk.
Funzionamento level shifter |
Collegamenti:
Diamo una veloce occhiata allo schema di "montaggio":Lato telefono:
Creiamo un nuovo progetto utilizzano zeRGBa:Ricordiamoci d'impostare "MERGE" nel comando zeRGBa.
Perchè? https://goo.gl/FouGEj
Codice:
Eccoci arrivati al sodo, per prima cosa includiamo le librerie necessari:1 2 3 4 5 6 | #define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> // --------------------- //#define FASTLED_ESP8266_NODEMCU_PIN_ORDER #include <FastLED.h> |
Subito dopo inseriamo tutto il necessario per far capire alla libreria FastLed quanti pixel stiamo utilizzando e dove li colleghiamo. Brightness sarà la luminosità, da 0 a 255.
#include <FastLED.h> #define NUM_LEDS 8 #define DATA_PIN 5 // D5 CRGB leds[NUM_LEDS]; #define BRIGHTNESS 128
char auth[] = "xxx";
char ssid[] = "xxx";
char pass[] = "xxx";
Nel Setup carichiamo tutti i dati inseriti qui sopra, compreso indirizzo e password della rete a cui la ESP si collegherà.Il Loop caricherà solo il software necessario al funzionamento di Blynk.
La funzione per caricare il widget zeRGBa è la seguente:
BLYNK_WRITE(V1) { int R = param[0].asInt(); int G = param[1].asInt(); int B = param[2].asInt(); showled(R, G, B); }Ad ogni acquisizione verrà chiamata la funzione showled, scritta come segue.
La funzione ha come parametri d'ingesso i 3 valori RGB in arrivo dall'app, riempirà successivamente tutti i led ad esso collegati. Infine con il comando "FastLED.show()" manda alla striscia NeoPixel tutti i colori selezionati.
void showled(int R, int G, int B) { //FastLED.clear(); for (int i = 0; i < NUM_LEDS; i++) { leds[i].setRGB( R, G, B); } FastLED.show(); }
Note aggiuntive:
- NeoPixel? nome tecnico?
Le NeoPixel hanno come chip il "WS2811". Per vedere quali strisce sono compatibili con la libreria FastLed, leggete questo: https://goo.gl/9CTFKn categoria "3-Wire Chipsets". - Proprio non voglio comprare un level shifter, come faccio?
Piccolo trucco: https://goo.gl/aYUcy1
Nessun commento:
Posta un commento