Como utilizar o LED RGB
Neste tutorial, você aprenderá como utilizar o LED RGB integrado a uma placa Arduino Uno, utilizando as saídas PWM para demonstrar as cores emitidas do componente. Por meio do monitor serial, o Arduino lerá o nome da cor escrita pelo usuário e, por meio do LED RGB, a cor digitada será reproduzida.
Caso ainda não tenha conhecimento básico sobre como usar o monitor serial da Arduino IDE, sugerimos que você leia o tutorial Comunicação Serial Arduino, para compreender melhor o projeto a ser desenvolvido, principalmente na parte de software.
[toc]
O que é um LED? O que significa o termo “LED”?
LED é uma sigla para Light Emitting Diode que em português significa Diodo Emissor de Luz. O LED é um componente eletrônico que, quando ocorre passagem de corrente elétrica, emite luz. Possui dois terminais, chamados de anodo (positivo) e catodo (negativo).
Por que utilizar um LED?
É sempre bom termos um auxílio visual nos nossos projetos, seja como sinalizador ou alarme, indicando que algo está ligado ou não, como os encontrados em televisores, aparelhos de DVD, computadores, dentre outros, ou por opções de design de produto, como podemos ver logo abaixo.
Ou seja, um LED é uma forma visual simples de um projeto conversar conosco. Outra forma visual de um projeto interagir é através de displays LCDs.
Falamos um pouco mais sobre a importância das interfaces homem maquina (IHM) no tutorial Display lcd 16×2 com Arduino.
O que é um LED RGB?
Assim como os LEDs tradicionais, o LED RGB emite luz por meio da passagem de corrente elétrica, mas ele apresenta a peculiaridade de ser composto por três LEDs de cores diferentes, sendo elas: vermelho (Red), verde (Green) e azul (Blue), surgindo daí o nome “RGB”.
Cada LED pode ser controlado de maneira individual, conectando apenas os seus terminais em alguma fonte de energia, deixando os outros desconectados, mas o seu grande diferencial está em justamente utilizar os três ao mesmo tempo, no qual utilizando pulsos PWM (recomendamos que veja o tutorial Arduino – Grandezas digitais, analógicas e PWM) para realizar o controle de intensidade de cada cor individualmente, de modo que, a cor resultante será a mistura das cores emitidas por cada LED.
Tipos de LED RGB
Por se tratar da associação de três LEDs distintos em um único LED, eles podem ser denominados de: catodo comum ou anodo comum, sendo o catodo comum o mais utilizado.
O tipo catodo comum possui uma interligação entre os catodos dos três LEDs, fazendo com que se torne apenas um. Já o tipo anodo comum apresenta uma interligação entre os anodos dos três LEDs, tornando-o apenas um, como é possível visualizar na figura abaixo.
Para identificar o terminal que equivale ao comum, basta ver qual terminal é o maior, ou ver qual está conectado a maior “placa” presente no interior do LED, como é possível ver na ilustração abaixo.
Mãos à obra – Comandando a cor a ser mostrada no LED RGB pelo Monitor Serial
O projeto deste tutorial visa integrar o monitor serial com o LED RGB, no qual o usuário enviará o nome de uma cor e o Arduino reproduzirá essa cor por meio do LED. Para este fim, serão necessários:
- 1 x Placa Arduino Uno ou outro Arduino
- 1 x LED RGB Catodo Comum
- 3 x resistores de 330Ω
- Fios Jumpers
- Protoboard
Montando o hardware
Com os componentes em mãos, montaremos o circuito abaixo.
Programando
Após montar o circuito na protoboard, damos início a parte de programação do arduino. Escreva em sua IDE o código apresentado abaixo. Não se preocupe, a explicação detalhada de cada linha será abordado logo abaixo.
const int azul = 9; const int verde = 10; const int vermelho = 11; String cor; void setup() { Serial.begin(9600); pinMode(azul, OUTPUT); pinMode(verde, OUTPUT); pinMode(vermelho, OUTPUT); } //Funções responsáveis por executar o brilho selecionado void vermelhoFuncao(){ digitalWrite(azul, LOW); digitalWrite(verde, LOW); digitalWrite(vermelho, HIGH); } void azulFuncao(){ digitalWrite(azul, HIGH); digitalWrite(verde, LOW); digitalWrite(vermelho, LOW); } void verdeFuncao(){ digitalWrite(azul, LOW); digitalWrite(verde, HIGH); digitalWrite(vermelho, LOW); } void amareloFuncao(){ analogWrite(azul, 0); analogWrite(verde, 50); analogWrite(vermelho, 255); } void roxoFuncao(){ analogWrite(azul, 207); analogWrite(verde, 0); analogWrite(vermelho, 255); } void brancoFuncao(){ digitalWrite(azul, HIGH); digitalWrite(verde, HIGH); digitalWrite(vermelho, HIGH); } void loop() { if(Serial.available()){ cor = Serial.readString(); Serial.println(cor); } if(cor == "Vermelho"){ vermelhoFuncao(); } if(cor == "Azul"){ azulFuncao(); } if(cor == "Verde"){ verdeFuncao(); } if(cor == "Amarelo"){ amareloFuncao(); } if(cor == "Roxo"){ roxoFuncao(); } if(cor == "Branco"){ brancoFuncao(); } }
Depois de passar o código acima para a sua IDE, verifique se a porta no qual o arduino está conectado está selecionada. Com tudo pronto, basta carregar o código para o arduino.
Colocando para funcionar
Agora vamos conferir o resultado deste projeto!
Entendendo a fundo
Hardware
– Como funciona
Quanto ao funcionamento específico do LED, recomendamentos que veja o artigo Como funcionam os LEDs, do Instituto Newton Braga, no qual ele explica o funcionamento dos LEDs de maneira geral comparando-o com a lâmpada incandescente.
– Montagem na protoboard
Relacionado a montagem, é composto apenas por resistores e um LED RGB, no qual os resistores estão presentes apenas para limitar o valor da corrente que circulará pelo circuito, pois sem ele a corrente poderia danificar o LED, ocasionando falha no funcionamento. Logo abaixo está o esquema eletrônico do projeto desenvolvido no tutorial de hoje.
Software
Neste tópico abordaremos cada instrução realizada pelo nosso código citado acima.
– Declarando as variáveis
São criadas quatro variáveis no código, três do tipo inteiro e uma do tipo string. O termo “const” utilizado antes do termo “int” foi empregado para dizer ao programa que a variável não sofrerá modificação em seu valor, ou seja, ela permanecerá com o mesmo valor no programa. Isso foi utilizado para declarar os pinos responsáveis pelas saídas que comandarão os terminais do LED RGB.
A String cor foi criada com o objetivo de ser armazenado nela a palavra que for escrita no monitor serial.
const int azul = 9; const int verde = 10; const int vermelho = 11; String cor;
Caso queira utilizar outros pinos para comandar seu LED RGB, lembre-se de utilizar somente os que possuem saída PWM.
– Configurações no void setup()
É iniciada a comunicação serial de 9600 bps (relembrando, caso você tenha dúvidas sobre como utilizar a comunicação serial, veja o tutorial Comunicação Serial Arduino). São declarados os pinos ‘azul’, ‘verde’ e ‘vermelho’ (no qual anteriormente foi atribuído a eles o valor que corresponde ao pino) como OUTPUT, ou seja, como saída.
void setup() { Serial.begin(9600); pinMode(azul, OUTPUT); pinMode(verde, OUTPUT); pinMode(vermelho, OUTPUT); }
– Criando funções para comandar o LED RGB
Nesta parte do código são criadas funções que tem por função comandar os terminais do LED RGB. Todas são iniciadas com void pois não retornarão nenhum valor para a função principal.
void vermelhoFuncao(){ digitalWrite(azul, LOW); digitalWrite(verde, LOW); digitalWrite(vermelho, HIGH); } void azulFuncao(){ digitalWrite(azul, HIGH); digitalWrite(verde, LOW); digitalWrite(vermelho, LOW); } void verdeFuncao(){ digitalWrite(azul, LOW); digitalWrite(verde, HIGH); digitalWrite(vermelho, LOW); } void amareloFuncao(){ analogWrite(azul, 0); analogWrite(verde, 50); analogWrite(vermelho, 255); } void roxoFuncao(){ analogWrite(azul, 207); analogWrite(verde, 0); analogWrite(vermelho, 255); } void brancoFuncao(){ digitalWrite(azul, HIGH); digitalWrite(verde, HIGH); digitalWrite(vermelho, HIGH); }
– Recebendo e armazenando a string de entrada
É verificado se há algum termo a ser lido do monitor serial. Caso haja, o termo é armazenado na variável cor. Logo após o armazenamento, é realizado um print no monitor serial do que foi recebido.
if(Serial.available()){ cor = Serial.readString(); Serial.println(cor); }
– Verificação do termo recebido
É realizada uma série de comparações para verificar o que foi recebido do monitor serial. As cores disponíveis para serem mostradas pelo LED RGB são: Vermelho, Azul, Verde, Amarelo, Roxo e Branco. Caso haja a confirmação que o que foi escrito corresponde a uma das opções, é chamada uma função específica para a realização do comando do LED RGB.
if(cor == "Vermelho"){ vermelhoFuncao(); } if(cor == "Azul"){ azulFuncao(); } if(cor == "Verde"){ verdeFuncao(); } if(cor == "Amarelo"){ amareloFuncao(); } if(cor == "Roxo"){ roxoFuncao(); } if(cor == "Branco"){ brancoFuncao(); }
Considerações finais
Esperamos que este tutorial tenha lhe esclarecido sobre a utilização deste componente eletrônico tão utilizado na área de desenvolvimento eletrônico.
Obrigado pela atenção e continue buscando conhecimento no portal do Vida de Silício.
Técnico em eletrotécnica e estudante de Engenharia Elétrica pelo IFES.
9 Comments
Deixe uma pergunta, sugestão ou elogio! Estamos ansiosos para ter ouvir!Cancelar resposta
Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.
Bom tutorial. Sá faltou alguns comentários sobre a capacidade do arduino em controlar mais LEDs posto que só pode fornecer até 40mA em cada porta.
Primeiro, gostei do projeto, bem bacana mesmo, Segundo, O que Não gostei foi da sua PAGINA Sobrepondo MAIS da metade da TELA, fica só um pouquinho de tela para visualizar
nao funcionou
Tive dificuldade para colocar para rodar, um pequeno detalhe no Serial Monitor, na primeira caixinha esquerda para direita no rodapé direito do Serial Monitor, escolha (nenhum final-de-linha), pois se deixar o parâmetro padrão(Nova-linha) o valor do Serial Monitor sempre será vazio.
O meu programa também não funcionou. Desconfio que seja o mesmo problema com o serial monitor. Porem não sei como trocar o parâmetro padrão(nova-linha) pelo (nenhum final-de-linha). Você pode me explicar como?
Olá, gostaria de saber se teria como ligar um único led juntamente com uma fita led através de extensão para ligar em uma placa mãe que tem controle de rgb, como no meu caso, aura sync da asus, agradeço a resposta!
Olá, se eu quisesse usar mais leds e quisesse que mudasse de cor (as que eu quisesse, na programação), como faria?
Olá Jorge. Para medir a tensão você precisará de um outro circuito ou módulo que possa ser integrado ao arduino, com isso você poderá definir por meio de programação qual cor o LED deverá assumir para cada valor de tensão. (Desculpe pela demora)
Olá, como Faria para que o led fizesse a leitura de tensão da energia que entra no arduino, afim de indicar Verde para carregado, amarelo para carga média e vermelho para bateria acabando?