ESP8266 - LED RGB

Este tutorial ensina você a usar o ESP8266 para controlar um LED RGB. Em detalhes, vamos aprender:

Hardware Necessário

1×ESP8266 NodeMCU ESP-12F
1×Alternatively, ESP8266 D1 Mini NodeMCU ESP-12F
1×Alternatively, ESP8266 NodeMCU ESP-12E (Uno-form)
1×Micro USB Cable
1×Alternatively, ESP8266 NodeMCU ESP-12F (SMD-form)
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×RGB LED
3×220 ohm Resistor
1×(Alternativa) Módulo LED RGB
1×Protoboard
1×Fios Jumper
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para ESP8266

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 o LED RGB

O LED RGB pode produzir qualquer cor combinando as três cores primárias: vermelho, verde e azul. Ele é composto por três LEDs distintos (vermelho, verde e azul), mas todos dentro de um único encapsulamento.

A Pinagem do LED RGB

Um LED RGB tem quatro pinos:

  • O pino comum (catodo-) precisa ser ligado ao GND (0V)
  • O pino R (vermelho) é usado para regular o vermelho
  • O pino G (verde) é usado para regular o verde
  • O pino B (azul) é usado para regular o azul
Pinagem do LED RGB

Para fazer um LED RGB funcionar com o ESP8266, precisamos adicionar resistores limitadores de corrente. Isso pode deixar a ligação um pouco complicada. Mas existe uma solução! Podemos usar um módulo LED RGB que já tem resistores embutidos. Bem fácil!

O módulo LED RGB também tem quatro pinos:

  • Pino comum (Catodo-): precisa ser conectado ao GND (0V)
  • R (vermelho): o pino é usado para controlar o vermelho
  • G (verde): o pino é usado para controlar o verde
  • B (azul): o pino é usado para controlar o azul
Pinagem do módulo LED RGB

※ Nota:

O pino comum pode ser catodo ou anodo, dependendo do tipo de LED RGB. Este tutorial usará um pino comum catodo.

Como funciona

No campo da física, três valores de cor formam uma cor: Vermelho (R), Verde (G) e Azul (B). Cada valor varia de 0 a 255. A combinação dos três valores produz um total de 256 x 256 x 256 cores.

Podemos configurar o LED RGB para qualquer cor que quisermos usando o ESP8266 para gerar sinais PWM (de 0 a 255) para os pinos R, G e B. O duty cycle dos sinais PWM enviados aos pinos R, G e B é proporcional aos valores de cor de Vermelho, Verde e Azul, respectivamente.

Diagrama de Ligação

  • Diagrama de ligação entre o ESP8266 e o LED RGB
Diagrama de ligação do LED RGB com ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Para mais informações, veja Pinagem do ESP8266 e como alimentar o ESP8266 e outros componentes.

  • Diagrama de ligação entre o ESP8266 e o módulo LED RGB
Diagrama de ligação do módulo LED RGB com ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Como Controlar o LED RGB

Vamos aprender, passo a passo, como controlar o LED GRB para qualquer cor, por exemplo #00979D:

  • Primeiro, decida qual cor você quer exibir e obtenha o código dela. Dicas:
  • Depois, converta o código da cor para 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
  • Especifique os pinos do ESP8266 que ligam aos pinos R, G e B. Por exemplo:
const int PIN_RED = 5; const int PIN_GREEN = 6; const int PIN_BLUE = 7;
  • Configure os seguintes pinos do ESP8266 no modo de saída:
pinMode(PIN_RED, OUTPUT); pinMode(PIN_GREEN, OUTPUT); pinMode(PIN_BLUE, OUTPUT);
  • Controle o LED para emitir a cor #00979D, que é composta por Vermelho = 0, Verde = 151 e Azul = 157.
analogWrite(PIN_RED, 0); analogWrite(PIN_GREEN, 151); analogWrite(PIN_BLUE, 157);

ESP8266 - Código de Exemplo do LED RGB

O código ESP8266 abaixo muda a cor do LED na seguinte sequência:

  • #00C9CC (Vermelho = 0, Verde = 201, Azul = 204)
  • #F7788A (Vermelho = 247, Verde = 120, Azul = 138)
  • #34A853 (Vermelho = 52, Verde = 168, Azul = 83)
/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp8266/esp8266-led-rgb */ const int PIN_RED = 5; const int PIN_GREEN = 6; const int PIN_BLUE = 7; 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 ESP8266 criando uma função:

/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp8266/esp8266-led-rgb */ const int PIN_RED = 5; const int PIN_GREEN = 6; const int PIN_BLUE = 7; 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); }

Conhecimento Adicional

Para um LED RGB com anodo comum, você precisa:

  • Conectar o pino comum ao 3.3V do ESP8266.
  • Inverter os valores de R, G e B na função analogWrite(), ou seja, usar 255 - R, 255 - G e 255 - B, respectivamente

Uma sequência de LEDs RGB ligados juntos forma uma Fita LED RGB. As fitas LED podem ser divididas em fitas LED endereçáveis e fitas LED não endereçáveis. Vamos criar tutoriais para os dois tipos de fita LED.

※ Nota:

Não use um único resistor no pino comum de um LED RGB em vez de três resistores nos outros pinos.

Isso porque, embora em teoria seja possível usar um único resistor no pino comum, na prática isso não funciona bem. Os LEDs em um encapsulamento RGB não são idênticos, ou seja, seus resistores são diferentes. Como resultado, a corrente é distribuída de forma desigual entre os LEDs, causando brilho desigual, o que pode levar à destruição de um ou mais LEDs e, por fim, dos outros LEDs.

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