Arduino Nano ESP32 - Fita LED WS2812B
Neste tutorial, vamos aprender a usar o Arduino Nano ESP32 para controlar a fita LED RGB WS2812B. Com um único pino do Arduino Nano ESP32:
- O Arduino Nano ESP32 pode controlar a cor de cada LED da fita de forma individual
- O Arduino Nano ESP32 pode mudar o brilho de cada LED da fita de forma individual
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.
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 da fonte de alimentação externa
- Pino Din: é o pino que recebe o sinal de controle. Ele deve ser conectado a um pino do Arduino Nano ESP32.
※ Nota:
A ordem dos pinos pode variar entre fabricantes. SEMPRE use os rótulos impressos na fita LED.
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Como Programar para a Fita LED RGB WS2812B
- Se esta é a primeira vez que você usa o Arduino Nano ESP32, veja como configurar o ambiente para o Arduino Nano ESP32 no Arduini IDE.
Há 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 D2 // The Arduino Nano 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 individual, podemos escalar o valor da cor.
- Os valores definidos por WS2812B.setBrightness() e WS2812B.setPixelColor() só têm efeito quando WS2812B.show() é chamado.
Código do Arduino Nano ESP32
O código abaixo faz o seguinte:
- Muda os pixels para verde um por um, com um atraso entre cada pixel
- Desliga todos os pixels por dois segundos
- Liga todos os pixels em vermelho ao mesmo tempo por dois segundos
- Repete o processo acima indefinidamente
/*
* Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com
* Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição.
* Para tutoriais completos e diagramas de ligação, visite:
* https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-ws2812b-led-strip
*/
#include <Adafruit_NeoPixel.h>
#define PIN_WS2812B D2 // The Arduino Nano ESP32 pin 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
- Abra o Library Manager clicando no ícone Library Manager na barra de navegação esquerda do Arduino IDE
- Pesquise “Adafruit NeoPixel”, depois encontre a biblioteca WS2812B da Adafruit
- Clique no botão Install para instalar a biblioteca NeoPixel.
- Copie o código acima e abra com o Arduini IDE
- Clique no botão Upload do Arduini IDE para fazer o upload do código para o Arduino Nano ESP32
- Veja o efeito de LED
※ Nota:
Para qualquer efeito de LED complicado, oferecemos o serviço de programação pago