ESP32 - Fita LED NeoPixel
A fita NeoPixel é como uma fita de LEDs RGB coloridos, e você pode controlar a cor e o brilho de cada LED de forma individual. Neste guia, vamos descobrir como usar um ESP32 para controlar a fita LED RGB NeoPixel. Para controlar todos os LEDs da fita NeoPixel, você só precisa de um único pino do ESP32.
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables ESP32 S3 Starter Kit (ESP32 S3 included) | |
| 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 NeoPixel
Pinagem
A fita LED RGB NeoPixel 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 GPIO do ESP32.
Diagrama de Ligação
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 NeoPixel
- Declare um objeto NeoPixel
#define PIN_NEO_PIXEL 16 // The ESP32 pin GPIO16 connected to NeoPixel
#define NUM_PIXELS 30 // The number of LEDs (pixels) on NeoPixel
Adafruit_NeoPixel NeoPixel(NUM_PIXELS, PIN_NEO_PIXEL, NEO_GRB + NEO_KHZ800);
- Inicialize o NeoPixel
NeoPixel.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
- Defina a cor de cada LED individual (chamado de pixel).
NeoPixel.setPixelColor(pixel, NeoPixel.Color(255, 0, 0));
- Defina o brilho de toda a fita.
NeoPixel.setBrightness(200); // a value from 0 to 255
※ Nota:
- NeoPixel.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 NeoPixel.setBrightness() e NeoPixel.setPixelColor() só têm efeito quando NeoPixel.show() é chamado.
Código ESP32
O código a seguir realiza as seguintes tarefas:
- Ele muda os pixels para verde em sequência, com uma pausa entre cada pixel.
- Ele desliga todos os pixels por dois segundos.
- Ele define todos os pixels como vermelho ao mesmo tempo, mantendo esse estado por 1 segundo.
- Todo esse processo é então repetido indefinidamente.
/*
* 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-neopixel-led-strip
*/
#include <Adafruit_NeoPixel.h>
#define PIN_NEO_PIXEL 16 // The ESP32 pin GPIO16 connected to NeoPixel
#define NUM_PIXELS 30 // The number of LEDs (pixels) on NeoPixel LED strip
Adafruit_NeoPixel NeoPixel(NUM_PIXELS, PIN_NEO_PIXEL, NEO_GRB + NEO_KHZ800);
void setup() {
NeoPixel.begin(); // initialize NeoPixel strip object (REQUIRED)
}
void loop() {
NeoPixel.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
NeoPixel.setPixelColor(pixel, NeoPixel.Color(0, 255, 0)); // it only takes effect if pixels.show() is called
NeoPixel.show(); // update to the NeoPixel Led Strip
delay(500); // 500ms pause between each pixel
}
// turn off all pixels for two seconds
NeoPixel.clear();
NeoPixel.show(); // update to the NeoPixel 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
NeoPixel.setPixelColor(pixel, NeoPixel.Color(255, 0, 0)); // it only takes effect if pixels.show() is called
}
NeoPixel.show(); // update to the NeoPixel Led Strip
delay(1000); // 1 second on time
// turn off all pixels for one seconds
NeoPixel.clear();
NeoPixel.show(); // update to the NeoPixel Led Strip
delay(1000); // 1 second off time
}
Passos Rápidos
- Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 na Arduino IDE.
- Faça a ligação conforme a imagem acima.
- Conecte a placa ESP32 ao seu PC usando um cabo USB Type-C
- Abra a Arduino IDE no seu PC.
- Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
- 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.
- 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
- Observe o efeito da fita LED