ESP8266 - Fita LED WS2812B

A fita LED RGB WS2812B é composta por LEDs cuja cor e brilho podem ser ajustados individualmente. Este tutorial ensina você a usar o ESP8266 para controlar a fita LED RGB WS2812B. Em detalhes, vamos aprender:

Precisamos usar apenas um pino digital do ESP8266 para controlar todos os LEDs da fita.

Sobre a Fita LED RGB WS2812B

Pinagem da Fita LED WS2812B

A fita LED RGB WS2812B tem três pinos que exigem conexões específicas:

  • O pino GND deve ser ligado ao GND (0V)
  • O pino VCC deve ser conectado ao 5V de uma fonte de alimentação externa
  • O pino Din é o pino que recebe o sinal de controle e deve ser ligado a um pino do ESP8266.
Pinagem do WS2812B

※ Nota:

A sequência dos pinos pode variar de acordo com o fabricante. É IMPRESCINDÍVEL usar as marcações impressas na fita LED.

Diagrama de Ligação

Diagrama de ligação do ESP8266 NodeMCU com fita LED RGB WS2812B

This image is created using Fritzing. Click to enlarge image

Para mais informações, veja Pinagem do ESP8266 e como alimentar o ESP8266 e outros componentes.

Como Programar a Fita LED RGB WS2812B

Há duas bibliotecas que podem ser usadas para controlar a fita LED WS2812B:

  • Biblioteca Adafruit NeoPixel.
  • Biblioteca FastLED.

Este tutorial usará a biblioteca Adafruit NeoPixel.

  • Crie um objeto WS2812B
#define PIN_WS2812B D1 // The ESP8266 pin that connects to WS2812B #define NUM_PIXELS 30 // The number of LEDs (pixels) on WS2812B Adafruit_NeoPixel WS2812B(NUM_PIXELS, PIN_WS2812B, NEO_GRB + NEO_KHZ800);
  • Fita com 30 LEDs
  • Inicializa a fita WS2812B, que contém 30 luzes.
WS2812B.begin(); // INITIALIZE WS2812B strip object (REQUIRED)
  • Especifique a cor de cada LED (conhecido como pixel).
WS2812B.setPixelColor(pixel, WS2812B.Color(255, 0, 0));
  • Ajuste o brilho de todas as fitas.
WS2812B.setBrightness(100); // a value from 0 to 255

※ Nota:

  • WS2812B.setBrightness() é usado para ajustar o brilho de todos os pixels da fita LED. Para definir o brilho de cada pixel individualmente, podemos escalar os valores de cor (R,G, B) com a mesma proporção.
  • Os valores definidos por WS2812B.setBrightness() e WS2812B.setPixelColor() só serão aplicados quando WS2812B.show() for executado.

Código ESP8266

O código abaixo executa as seguintes sequências:

  • Acende os pixels em verde, um por um, com um atraso entre cada pixel
  • Desliga todos os pixels por dois segundos
  • Acende todos os pixels em vermelho simultaneamente por dois segundos
  • Repete esse processo indefinidamente
/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp8266/esp8266-ws2812b-led-strip */ #include <Adafruit_NeoPixel.h> #define PIN_WS2812B D1 // The ESP8266 pin that connects to WS2812B #define NUM_PIXELS 30 // The number of LEDs (pixels) on WS2812B Adafruit_NeoPixel WS2812B(NUM_PIXELS, PIN_WS2812B, NEO_GRB + NEO_KHZ800); void setup() { WS2812B.begin(); // INITIALIZE WS2812B strip object (REQUIRED) } void loop() { WS2812B.clear(); // set all pixel colors to 'off'. It only takes effect if pixels.show() is called // turn pixels to green one by one with delay between each pixel for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { // for each pixel WS2812B.setPixelColor(pixel, WS2812B.Color(0, 255, 0)); // it only takes effect if pixels.show() is called WS2812B.show(); // send the updated pixel colors to the WS2812B hardware. delay(DELAY_INTERVAL); // pause between each pixel } // turn off all pixels for two seconds WS2812B.clear(); WS2812B.show(); // send the updated pixel colors to the WS2812B hardware. delay(2000); // off time // turn on all pixels to red at the same time for two seconds for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { // for each pixel WS2812B.setPixelColor(pixel, WS2812B.Color(255, 0, 0)); // it only takes effect if pixels.show() is called } WS2812B.show(); // send the updated pixel colors to the WS2812B hardware. delay(2000); // on time // turn off all pixels for one seconds WS2812B.clear(); WS2812B.show(); // send the updated pixel colors to the WS2812B hardware. delay(2000); // off time }

Passos Rápidos

Para começar com o ESP8266 no Arduino IDE, siga estes passos:

  • Confira o tutorial como configurar o ambiente para o ESP8266 no Arduino IDE se esta for a sua primeira vez usando o ESP8266.
  • Ligue os componentes como mostrado no diagrama.
  • Conecte a placa ESP8266 ao seu computador usando um cabo USB.
  • Abra o Arduino IDE no seu computador.
  • Escolha a placa ESP8266 correta, como (por exemplo, NodeMCU 1.0 (ESP-12E Module)), e a respectiva porta COM.
  • Clique no ícone de Libraries na barra esquerda do Arduino IDE.
  • Pesquise por “Adafruit NeoPixel” e localize a biblioteca NeoPixel da Adafruit.
  • Em seguida, pressione o botão Install para instalar a biblioteca NeoPixel.
Biblioteca NeoPixel para ESP8266 NodeMCU
  • Copie o código e abra-o no Arduino IDE.
  • Clique no botão Upload para enviar o código ao ESP8266.
  • Confira o efeito dos LEDs.

※ Nota:

Para qualquer efeito de LED mais complexo, oferecemos o serviço de programação pago

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!