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:

Hardware Necessário

1×Arduino Nano ESP32
1×Cabo USB Tipo-A para Tipo-C (para PC com USB-A)
1×Cabo USB Tipo-C para Tipo-C (para PC com USB-C)
1×WS2812B RGB Fita LED
1×1000uF Capacitor
1×470Ω Resistor
1×Fonte de Alimentação 5V
1×(Opcional) Conector de Alimentação DC
1×Fios Jumper
1×Protoboard
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para Arduino Nano
1×(Recomendado) Placa de Expansão Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentação para Arduino Nano ESP32

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.
Pinagem do WS2812B

※ Nota:

A ordem dos pinos pode variar entre fabricantes. SEMPRE use os rótulos impressos na fita LED.

Diagrama de Ligação

Diagrama de Ligação da fita LED RGB WS2812B do Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Como Programar para 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 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.
Biblioteca neopixel do Arduino Nano ESP32
  • 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

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!