Arduino – Mudando a cor de um LED RGB sequencialmente

Projeto: Como mudar a cor de um LED RGB com Arduino

Os LEDs RGB possuem três LEDs em um único encapsulamento: um vermelho (R, red), um verde (G, green) e um azul (B, blue), com seus anodos ou seus catodos conectados entre si (configurações anodo comum ou catodo comum). Portanto, possuem quatro terminais, uma para cada cor e um comum.

Neste projeto vamos aprender a controlar um LED RGB, de modo que seja possível controlar as cores que ele exibirá. Faremos um sequencial, no qual o LED piscará com uma cor diferente por vez, e ainda vamos incrementar o código controlando a intensidade do brilho – a cada piscada, o LED brilhará um pouco mais intenso, até atingir um valor máximo, e então voltará ao brilho mínimo, reiniciando o processo.

O esquema a seguir mostra a ligação de um LED RGB de catodo comum a um Arduino, da forma como trabalharemos no projeto. Note que serão usados três resistores limitadores de corrente, um para cada LED interno do conjunto.

Arduino - conectando LEDs RGB

Os resistores R1, R2 e R3 podem ser resistores de 220 Ω, e o LED utilizado é um LED RGB de catodo comum (conectado ao GND). Cada terminal do LED será conectado a um pino digital do Arduino, sendo que conectaremos o terminal vermelho ao pino 3, o verde ao pino 5 e o azul ao pino 6, que são pinos capazes de fornecer saída em PWM, que precisaremos para controlar a intensidade de brilho do LED.

Veja na imagem abaixo o conjunto montado em uma breadboard, com a cor azul acesa no LED:

Arduino e LED RGB

Na listagem abaixo temos o código a ser utilizado neste projeto. Usaremos a função analogWrite() para controlar qual LED é aceso, e qual a intensidade de brilho com o qual ele emitirá luz.

const int vermelho = 3; // configurar pinos ligados ao LED
const int verde = 5;
const int azul = 6;
int cor = 0; // valor de 0 a 255 para representar a matiz (graduação de cor)
 
void setup() {
// sem declaração; usando função analogWrite()
}
 
void loop() {
// escrever os valores RGB nos pinos:
analogWrite(vermelho, cor);
delay (500);
analogWrite(vermelho, 0);
delay (100);
analogWrite(verde, cor);
delay (500);
analogWrite(verde, 0);
delay (100);
analogWrite(azul, cor);
delay (500);
analogWrite(azul, 0);
delay (100);
 
cor = cor + 15; // incrementar a intensidade da cor
if (cor > 255) {
  cor = 0;
  delay(10);
}
}

Após carregar o código no Arduino, observe que o LED piscará, acendendo uma cor por vez em sequência, e começando com um brilho fraco, o qual irá aumentar ao longo do tempo. Ao atingir o valor máximo de brilho, o LED se apaga e o processo é reiniciado.

Note que neste projeto foi usado um LED RGB cristal (transparente), no qual podemos ver claramente a distinção entre os LEDs coloridos internos. Se você quiser misturar as cores para obter novos tons, use um LED RGB difuso. Trataremos disso em um próximo projeto.

Até!

Sobre Fábio dos Reis (1195 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

6 Comentários em Arduino – Mudando a cor de um LED RGB sequencialmente

  1. SilvioCadete // 29/05/2016 em 22:38 // Responder

    Olá Fábio,
    É possível alternar a cor Blue para Yellow?

    • Sim Silvio, para isso é necessário acender os LEDs na proporção necessária para atingir a cor desejada. Lembrando que é recomendável nesse caso usar um LED difuso, de modo que a mistura das cores seja perceptível, em vez de enxergarmos as cores separadas.

  2. Jorgge Afonso // 03/10/2016 em 21:16 // Responder

    Náo É posivél, vosê presiça ossilar o PimMolde no GND nu modo Anolojico.
    Ascim Daha tudo serto !

  3. william kazan // 06/08/2017 em 19:46 // Responder

    Boa noite: preciso de um circuito alimentado por 12v que sequencie + ou – 20 leds e chegando ao vigésimo reinicie do inicio e se possivel com controle de velocidade

  4. Desejo fazer o curso de arduino

Escreva um comentário

Seu e-mail não será divulgado


*