ESP32 - LED RGB

Este tutorial ensina como controlar um LED RGB para emitir qualquer cor usando o ESP32.

Sobre o LED RGB

O LED RGB pode emitir qualquer cor misturando as 3 cores básicas vermelho, verde e azul. Um único LED RGB é composto por 3 LEDs: vermelho, verde e azul. Esses três LEDs ficam em um único encapsulamento, de modo que parece um único LED.

Pinagem do LED RGB

O LED RGB possui quatro pinos:

  • Pino R (vermelho): serve para controlar o elemento de cor vermelha
  • Pino G (verde): serve para controlar o elemento de cor verde
  • Pino B (azul): serve para controlar o elemento de cor azul
  • Pino Comum (Cátodo-): conecte este pino ao GND (0V)
Pinagem do LED RGB

Para conectar o LED RGB ao ESP32, precisamos adicionar resistores limitadores de corrente. Isso pode complicar a ligação. Felizmente, podemos usar um módulo LED RGB que já vem com resistores limitadores de corrente integrados.

O Módulo LED RGB também possui quatro pinos:

  • Pino Comum (Cátodo-): precisa ser conectado ao GND (0V)
  • R (vermelho): pino usado para controlar o vermelho
  • G (verde): pino usado para controlar o verde
  • B (azul): pino usado para controlar o azul
Pinagem do Módulo LED RGB

※ Nota:

De acordo com o pino comum, existem dois tipos de LED: ânodo comum e cátodo comum. Este tutorial usa um LED de cátodo comum.

Como o LED RGB Funciona

Em termos de física, uma cor é uma combinação de três elementos de cor: Vermelho (R), Verde (G) e Azul (B). O valor de cada elemento de cor varia de 0 a 255. A combinação dos valores dos três elementos de cor cria 256 x 256 x 256 cores no total.

Se gerarmos sinais PWM nos pinos R, G, B, o LED RGB exibe uma cor correspondente aos valores do ciclo de trabalho (duty cycle) do PWM. Alterando o ciclo de trabalho dos sinais PWM (de 0 a 255), o LED RGB pode exibir qualquer cor. Os valores de cor Vermelho (R), Verde (G) e Azul (B) correspondem ao ciclo de trabalho do PWM nos pinos R, G e B, respectivamente.

Diagrama de Ligação entre LED RGB e ESP32

  • Diagrama de ligação entre ESP32 e LED RGB
Diagrama de ligação ESP32 LED RGB

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.

  • Diagrama de ligação entre ESP32 e módulo LED RGB
Diagrama de ligação ESP32 módulo LED RGB

This image is created using Fritzing. Click to enlarge image

Como Controlar o LED RGB

Vamos supor que queremos exibir a cor #00979D no LED RGB. Podemos seguir os passos abaixo:

  • Encontre o código da cor. Dicas:
  • Converta o código de cor em valores R, G, B usando a ferramenta do w3school. Anote esses valores. Neste caso: R = 0, G = 151, B = 157
Seletor de cores do LED RGB
  • Defina os pinos do ESP32 que se conectam aos pinos R, G e B. Por exemplo:
#define PIN_RED 23 // GPIO23 #define PIN_GREEN 22 // GPIO22 #define PIN_BLUE 21 // GPIO21
  • Configure esses pinos do ESP32 no modo de saída
pinMode(PIN_RED, OUTPUT); pinMode(PIN_GREEN, OUTPUT); pinMode(PIN_BLUE, OUTPUT);
  • Controle o LED para emitir essa cor (#00979D → R = 0, G = 151, B = 157)
analogWrite(PIN_RED, 0); analogWrite(PIN_GREEN, 151); analogWrite(PIN_BLUE, 157);

ESP32 - Código de Exemplo do LED RGB

O código abaixo muda a cor do LED entre as seguintes cores em sequência:

  • #00C9CC (R = 0, G = 201, B = 204)
  • #F7788A (R = 247, G = 120, B = 138)
  • #34A853 (R = 52, G = 168, B = 83)
/* * 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-rgb-led */ #define PIN_RED 23 // GPIO23 #define PIN_GREEN 22 // GPIO22 #define PIN_BLUE 21 // GPIO21 void setup() { pinMode(PIN_RED, OUTPUT); pinMode(PIN_GREEN, OUTPUT); pinMode(PIN_BLUE, OUTPUT); } void loop() { // color code #00C9CC (R = 0, G = 201, B = 204) analogWrite(PIN_RED, 0); analogWrite(PIN_GREEN, 201); analogWrite(PIN_BLUE, 204); delay(1000); // keep the color 1 second // color code #F7788A (R = 247, G = 120, B = 138) analogWrite(PIN_RED, 247); analogWrite(PIN_GREEN, 120); analogWrite(PIN_BLUE, 138); delay(1000); // keep the color 1 second // color code #34A853 (R = 52, G = 168, B = 83) analogWrite(PIN_RED, 52); analogWrite(PIN_GREEN, 168); analogWrite(PIN_BLUE, 83); delay(1000); // keep the color 1 second }

Ao usar muitas cores, podemos encurtar o código criando uma função:

/* * 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-rgb-led */ #define PIN_RED 23 // GPIO23 #define PIN_GREEN 22 // GPIO22 #define PIN_BLUE 21 // GPIO21 void setup() { pinMode(PIN_RED, OUTPUT); pinMode(PIN_GREEN, OUTPUT); pinMode(PIN_BLUE, OUTPUT); } void loop() { // color code #00C9CC (R = 0, G = 201, B = 204) setColor(0, 201, 204); delay(1000); // keep the color 1 second // color code #F7788A (R = 247, G = 120, B = 138) setColor(247, 120, 138); delay(1000); // keep the color 1 second // color code #34A853 (R = 52, G = 168, B = 83) setColor(52, 168, 83); delay(1000); // keep the color 1 second } void setColor(int R, int G, int B) { analogWrite(PIN_RED, R); analogWrite(PIN_GREEN, G); analogWrite(PIN_BLUE, B); }

※ 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!