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.
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:
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é!
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.
Náo É posivél, vosê presiça ossilar o PimMolde no GND nu modo Anolojico.
Ascim Daha tudo serto !
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
Desejo fazer o curso de arduino
Olá Alberto! Você pode seguir o curso de Arduino seguindo essa playlist: https://www.youtube.com/playlist?list=PLucm8g_ezqNoTYPIDuHphXCUIRVJOImWz
Abraço!