Puoi realizzare il RGB WS2812 serial ESP8266 Wemos cambiando semplicemente il micro controllore.
Hai letto sul precedente articolo dedicato al controllo RGB WS2812 serial come realizzare il progetto con l’arduino uno ed una striscia neopixel.
Ho deciso di riproporre questo esempio per mostrarti cosa cambiare per ottenere lo stesso effetto con un altra scheda e sottolineare il lavoro eseguito dagli sviluppatori dell’IDE Arduino per rendere totalmente compatibile il codice scritto su una board originale arduino anche con altri sistemi.
RGB WS2812 serial ESP8266 Wemos
Inizia dallo schema dei collegamenti che differiscono dall’Arduino Uno:
sia per comodità pratica sia per non dover eseguire modifiche allo sketch utilizzi il pin D4 della wemos per come signale del ws2812B neopixel.
Ho utilizzato un connettore JST PH 2.0mm saldato direttamente sulla striscia neopixel da usare per collegare il RGB WS2812 serial ESP8266 Wemos.
Rispetta la polarità della striscia led ricordando che il segnale, ossia il pin da cui arrivano i comandi ai led, è il pin centrale ( cavo giallo ).
Un ultima precisazione è relativa al pin D4 che nello sketch leggerai essere il pin 2, come per l’arduino uno.
Il motivo è legato al pinout della wemos che ho pubblicato in un precedente articolo e che ti riporto:
In cui leggi che il pin D4 è mappato come pin 2 ( quadratino verde sulla linea del D4 ) perchè connesso al GPIO2.
Lo sketch RGB WS2812 serial ESP8266 Wemos
lo sketch del progetto RGB WS2812 serial ESP8266 Wemos è praticamente identico a quello che hai usato per l’arduino uno.
#include <Adafruit_NeoPixel.h> #define PIN 2 #define NUMPIXELS 27 byte rgb[3] = {127,127,127}; byte oldrgb[3] = {127,127,127}; String inputString = ""; bool stringComplete = false; Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); void setup() { Serial.begin(115200); pixels.begin(); for(int i=0;i<NUMPIXELS;i++){ pixels.setPixelColor(i, pixels.Color(255,255,255)); pixels.show(); delay(5); } for(int i=0;i<NUMPIXELS;i++){ pixels.setPixelColor(i, pixels.Color(0,0,0)); pixels.show(); delay(10); } } void loop() { while (Serial.available()) { // get the new byte: char inChar = (char)Serial.read(); inputString += inChar; if (inChar == '\n') { stringComplete = true; Serial.println(inputString); } } if (stringComplete) { inputString = getRGB( inputString," ",0 ); inputString = getRGB( inputString," ",1 ); inputString = getRGB( inputString," ",2 ); inputString = ""; stringComplete = false; } if ( (rgb[0] != oldrgb[0]) || (rgb[1] != oldrgb[1]) || (rgb[2] != oldrgb[2]) ) { oldrgb[0] = rgb[0]; oldrgb[1] = rgb[1]; oldrgb[2] = rgb[2]; for(int i=0;i<NUMPIXELS;i++){ pixels.setPixelColor(i, pixels.Color(rgb[0],rgb[1],rgb[2])); pixels.show(); delay(20); } } } String getRGB( String input, String sep, byte rgbIndex ) { byte i = input.indexOf(sep); if ( i > 0 ) { rgb[rgbIndex] = input.substring(0,i).toInt(); return input.substring(i+1); } }
in questo modo la descrizione dello sketch puoi leggerla qui.
Il video RGB WS2812 serial
anche per il progetto RGB WS2812 serial ESP8266 Wemos come per il precedente il video demo è il seguente:
in cui è indifferente se utilizzi il micro controllore Arduino Uno o l’ESP8266 in form factor wemos.
Repository del progetto
Ricorda che trovi il software, di cui hai letto in questa serie di articoli, sul mio gitHub.
2 commenti
Hey
I have a problem with your code that I am using WI FI does not connect
A reset is required and after a while still cannot connect
Could you help me
P.S.
When I download the espalex template, the connection is established on the first try.
Autore
Hi Giorgi,
this sketch use the serial comunication, is it with this connection that you have problems?