ESP32 - Fita LED WS2812B

Neste tutorial, vamos aprender como usar o ESP32 para controlar a fita LED RGB WS2812B. Com um único pino do ESP32:

Sobre a Fita LED RGB WS2812B

Pinagem

A Fita LED RGB WS2812B tem três pinos:

  • Pino GND: precisa ser conectado ao GND (0V)
  • Pino VCC: precisa ser conectado ao 5V de uma fonte de alimentação externa
  • Pino Din: é o pino que recebe o sinal de controle. Ele deve ser conectado a um pino do ESP32.
Pinagem do WS2812B

※ Nota:

A ordem dos pinos pode variar entre fabricantes. SEMPRE use as etiquetas impressas na Fita LED.

Diagrama de Ligação

Diagrama de Ligação do ESP32 com a fita LED RGB WS2812B

This image is created using Fritzing. Click to enlarge image

Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.

Como Programar a Fita LED RGB WS2812B

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

  • Biblioteca Adafruit NeoPixel.
  • Biblioteca FastLED.

Este tutorial vai usar a biblioteca Adafruit NeoPixel

  • Declare um objeto WS2812B
#define PIN_WS2812B 4 // ESP32 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);
  • Inicialize o WS2812B
WS2812B.begin(); // INITIALIZE WS2812B strip object (REQUIRED)
  • Defina a cor de cada LED individual (chamado de pixel).
WS2812B.setPixelColor(pixel, WS2812B.Color(255, 0, 0));
  • Defina o brilho de toda a fita.
WS2812B.setBrightness(100); // a value from 0 to 255

※ Nota:

  • WS2812B.setBrightness() é usado para todos os pixels da fita LED. Para definir o brilho de cada pixel individualmente, podemos ajustar a escala do valor da cor.
  • Os valores definidos por WS2812B.setBrightness() e WS2812B.setPixelColor() só têm efeito quando WS2812B.show() é chamado.

Código ESP32

O código abaixo faz o seguinte:

  • 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 ao mesmo tempo por dois segundos
  • Repete o processo acima infinitamente
/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-ws2812b-led-strip */ #include <Adafruit_NeoPixel.h> #define PIN_WS2812B 16 // The ESP32 pin GPIO16 connected to WS2812B #define NUM_PIXELS 30 // The number of LEDs (pixels) on WS2812B LED strip 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(); // update to the WS2812B Led Strip delay(500); // 500ms pause between each pixel } // turn off all pixels for two seconds ws2812b.clear(); ws2812b.show(); // update to the WS2812B Led Strip delay(2000); // 2 seconds 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(); // update to the WS2812B Led Strip delay(1000); // 1 second on time // turn off all pixels for one seconds ws2812b.clear(); ws2812b.show(); // update to the WS2812B Led Strip delay(1000); // 1 second off time }

Passos Rápidos

  • Clique no ícone Libraries na barra lateral esquerda da Arduino IDE.
  • Pesquise por “Adafruit NeoPixel” e depois encontre a biblioteca NeoPixel da Adafruit
  • Clique no botão Install para instalar a biblioteca NeoPixel.
Biblioteca neopixel para ESP32
  • Copie o código acima e abra-o na Arduino IDE
  • Clique no botão Upload na Arduino IDE para carregar o código no ESP32
  • Veja o efeito dos LEDs

※ Nota:

Para qualquer efeito de LED complicado, 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!