RGB WS2812 serial ESP8266 WeMos

Puoi realizzare il RGB WS2812 serial ESP8266 Wemos cambiando semplicemente il micro controllore.

RGB WS2812 serial ESP8266 Wemos RGB Neopixel serial ws2812 wemos

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:

RGB Neopixel serial ws2812 wemos vert

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:

wemos d1 mini pinpout

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.

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: http://www.mauroalfieri.it/elettronica/rgb-ws2812-serial-esp8266-wemos.html

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.