Arduino - LED RGB

Neste tutorial, vamos aprender:

Sobre o LED RGB

O LED RGB pode emitir qualquer cor misturando as 3 cores básicas: vermelho, verde e azul. Na verdade, ele é formado por 3 LEDs separados (vermelho, verde e azul) montados juntos em um único encapsulamento.

Pinagem

O LED RGB tem quatro pinos:

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

Para conectar o LED RGB ao Arduino, precisamos usar resistores limitadores de corrente. Isso pode deixar a ligação complicada. Felizmente, podemos usar o módulo LED RGB, que já tem resistores limitadores de corrente embutidos.

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

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

※ Nota:

O pino comum pode ser cátodo ou ânodo, dependendo do tipo de LED RGB. Este tutorial usa um LED de cátodo comum.

Como funciona

Na física, uma cor é composta por três valores de cor: Vermelho (R), Verde (G) e Azul (B). Cada valor de cor vai de 0 a 255.

A mistura dos três valores cria 256 x 256 x 256 cores no total.

Se aplicarmos sinais PWM (com duty cycle de 0 a 255) aos pinos R, G e B, podemos fazer o LED RGB exibir qualquer cor que quisermos.

O duty cycle dos sinais PWM nos pinos R, G e B corresponde aos valores de cor Vermelho (R), Verde (G) e Azul (B).

Diagrama de Ligação

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

This image is created using Fritzing. Click to enlarge image

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

This image is created using Fritzing. Click to enlarge image

Como Controlar o LED RGB

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

  • Defina qual cor você quer exibir e obtenha o código dessa cor. Dicas:
  • Converta o código de cor em valores R, G e B usando a ferramenta da w3school. Anote esses valores. Neste caso: R = 0, G = 151, B = 157
Seletor de cores para LED RGB
  • Defina os pinos do Arduino que se conectam aos pinos R, G e B. Por exemplo:
const int PIN_RED = 5; const int PIN_GREEN = 6; const int PIN_BLUE = 9;
  • Configure esses pinos do Arduino 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);

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

Quando usamos muitas cores, podemos encurtar o código criando uma função:

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-rgb-led */ const int PIN_RED = 5; const int PIN_GREEN = 6; const int PIN_BLUE = 9; 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 LED RGB com ânodo comum, você precisa:
    • Conectar o pino comum ao 3.3V do Arduino.
    • Alterar os valores R, G e B na função analogWrite() para 255 - R, 255 - G e 255 - B, respectivamente
  • Uma sequência de LEDs RGB conectados juntos forma a Fita LED RGB. A fita LED pode ser classificada em fita LED endereçável e fita LED não endereçável. Vamos fazer tutoriais para cada tipo de fita LED.

※ Nota:

Evite usar um único resistor no pino comum do LED RGB em vez de três resistores nos outros pinos.

Como sabemos, os três LEDs dentro de um único encapsulamento RGB estão em paralelo. Em condições ideais, não há problema em usar um único resistor no pino comum. Porém, na prática, não faça isso. Isso porque os LEDs do mundo real não têm as mesmas características. Os três LEDs no encapsulamento RGB NÃO são idênticos ⇒ As resistências dos LEDs são diferentes ⇒ A corrente é distribuída de forma desigual entre os LEDs ⇒ O brilho não é o mesmo e isso pode queimar um LED e, depois, queimar os 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!