Tutorial ESP32 6/55 - Usando LED RGB Projeto 2.3 - Kit de Aprendizado IoT ESP32 da SunFounder
Neste tutorial, vamos aprender como controlar um LED RGB usando o microcontrolador ESP32. Este projeto ajudará você a entender como conectar o LED RGB e controlar suas cores usando sinais PWM (Modulação por Largura de Pulso). Ao final deste tutorial, você será capaz de criar qualquer combinação de cores ajustando a intensidade de cada componente do LED. Esta é uma habilidade fundamental para criar projetos visualmente envolventes.

Para obter uma melhor compreensão do LED RGB e suas capacidades de mistura de cores, exploraremos a fiação e o código necessários para controlá-lo com o ESP32. Se você precisar de assistência visual, não deixe de conferir o vídeo (no vídeo em 03:20) para uma explicação mais clara sobre a fiação e a configuração do código.
Hardware Explicado
Os principais componentes deste projeto incluem o módulo ESP32, o LED RGB e resistores. O ESP32 é um microcontrolador poderoso que possui Wi-Fi e Bluetooth integrados, tornando-o ideal para aplicações de IoT. O LED RGB é composto por três LEDs individuais (vermelho, verde e azul) alojados em um único pacote, permitindo uma ampla gama de cores com base na combinação das três cores.
Na nossa configuração, o LED RGB será ligado em uma configuração de ânodo comum, onde o pino do ânodo está conectado a uma tensão positiva, e o pino do cátodo de cada cor é controlado independentemente. Dessa forma, podemos ajustar o brilho de cada cor enviando sinais PWM através do ESP32.
Detalhes da Ficha Técnica
| Fabricante | SunFounder |
|---|---|
| Número da peça | RGB-LED-4PIN |
| Tipo Comum | Ânodo comum |
| Tensão de Polarização (por LED) | 2,0 V (Vermelho), 3,2 V (Verde), 3,2 V (Azul) |
| Corrente Máxima (por LED) | 20 mA |
| Temperatura de Operação | -25 a 85 °C |
| Pacote | Conector de 4 pinos com orifício atravessado |
- Use um resistor de 220 Ω para cada cor para limitar a corrente e prevenir danos.
- Certifique-se de que o pino comum esteja conectado à tensão apropriada (3,3 V para ESP32).
- Verifique a polaridade ao conectar o LED RGB para evitar danos reversos.
- Use PWM para controlar os níveis de brilho, com uma frequência em torno de 5000 Hz recomendada.
- Teste cada cor individualmente antes de ligar toda a configuração.
Instruções de fiação
Para ligar o LED RGB ao ESP32, comece identificando os pinos do LED RGB. O pino mais longo é o ánodo comum, que será conectado à fonte de 3,3 V no ESP32. Os outros três pinos são para vermelho, verde e azul. Em nossa configuração, conecte o pino vermelho ao GPIO.27, o pino verde para GPIO26e o pino azul para GPIO25Cada um desses pinos também terá um resistor de 220 Ω conectado a eles.
Comece colocando o LED RGB na placa de ensaio, garantindo que o pino do ânodo comum esteja à esquerda. Insira o pino vermelho na placa de ensaio e conecte-o a uma extremidade do resistor, com a outra extremidade do resistor indo para o GPIO.27. Repita isso para os pinos verde e azul, conectando o pino verde ao GPIO26e o pino azul para GPIO25Por fim, conecte o pino comum ao pino de 3,3 V no ESP32 para completar o circuito. Certifique-se de conectar o terra do ESP32 à placa de ensaio também.

Exemplos de Código e Passo a Passo
No código, começamos definindo os pinos do LED RGB usando constantes. Por exemplo,const int redPin = 27;define o pino GPIO para o LED vermelho. Também configuramos a frequência e a resolução do PWM comconst int freq = 5000;econst int resolution = 8;. Isso define os parâmetros necessários para controlar o brilho de cada cor de LED.
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;Em seguida, configuramos os canais PWM para cada cor nosetup() função. OledcAttach()a função vincula cada pino ao canal PWM correspondente. Essa configuração garante que podemos controlar o brilho de cada cor de forma independente.
void setup() {
ledcAttach(redPin, freq, resolution);
ledcAttach(greenPin, freq, resolution);
ledcAttach(bluePin, freq, resolution);
}No textoloop()função, usamos osetColor()função para mudar as cores do LED. Os valores passados para esta função representam a intensidade de vermelho, verde e azul. Por exemplo, chamandosetColor(255, 0, 0);define o LED para vermelho. Após cada alteração de cor, usamosdelay(1000);esperar um segundo antes de mudar para a próxima cor.
void loop() {
setColor(255, 0, 0); // Red
delay(1000);
setColor(0, 255, 0); // Green
delay(1000);
}Demonstração / O que Esperar
Após completar a fiação e carregar o código no ESP32, você deve ver o LED RGB alternar entre várias cores: vermelho, verde, azul, amarelo, roxo e ciano. Se o LED não acender corretamente, verifique sua fiação e certifique-se de que o ânodo comum está conectado a 3,3 V. Além disso, se você notar cores inesperadas, verifique as conexões dos resistores aos pinos do LED.
Conforme demonstrado no vídeo (no vídeo às 10:45), ajustando os valores emsetColor()A função permite que você crie cores diferentes. Experimente várias combinações para ver como o LED RGB responde.
Marcos de tempo do vídeo
- 00:00- Introdução ao LED RGB
- 03:20- Explicação da fiação
- 10:45- Revisão de código
- 12:30- Demonstração da mistura de cores
/*
* // Defina os pinos do LED RGB
*/
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;
// Defina a frequência e a resolução do PWM.
const int freq = 5000;
const int resolution = 8;
void setup() {
// Configurar pinos PWM
ledcAttach(redPin, freq, resolution);
ledcAttach(greenPin, freq, resolution);
ledcAttach(bluePin, freq, resolution);
}
void loop() {
setColor(255, 0, 0); // Vermelho
delay(1000);
setColor(0, 255, 0); // Verde
delay(1000);
setColor(0, 0, 255); // Azul
delay(1000);
setColor(255, 255, 0); // Amarelo
delay(1000);
setColor(80, 0, 80); // Roxo
delay(1000);
setColor(0, 255, 255); // Ciano
delay(1000);
}
void setColor(int red, int green, int blue) {
ledcWrite(redPin, red);
ledcWrite(greenPin, green);
ledcWrite(bluePin, blue);
}
Common Course Links
Common Course Files
Recursos e referências
-
DocumentaçãoTutorial ESP32 6/55 - Página do documento LED RGB SunFounderdocs.sunfounder.com
Arquivos📁
Nenhum arquivo disponível.