Neste tutorial, vamos aprender a controlar um LED RGB com o Arduino UNO utilizando 3 saídas PWM que nos permitem estabelecer diferentes correntes. Para este tutorial utilizaremos um LED RGB cátodo comum, e os valores da intensidade vão de 0 a 255 configurando função analogWrite().
Atenção: Para o LED RGB de ânodo comum o pino mais longo é conectado ao Arduino positivo (+5V). No LED RGB de cátado comum o pino mais logo é conectado ao Arduino negativo (GND).
A imagem abaixo representada mostra como os componentes devem ser ligados. Nós iremos usar pinos digitais 9 (vermelho), 10 (verde) e 11 (azul) do Arduino, que têm saída PWM. Entre os pinos digitais e os LED RGB vamos colocar 3 resistências de 220Ohm.
Este é código que descarregamos no nosso Arduino, linha a linha está explicado para tornar fácil de entender.
//-------------------------------------------------- //Declaramos os pinos de entrada e de saída e as variáveis //-------------------------------------------------- int ledRojo = 9; //Declaramos o LED Roxo int ledVerde = 10; //Declaramos o Pino LED Verde int ledAzul = 11; //Declaramos o Pino LED Azul int pausa = 20; //Pausa entre as interações do sinal PWM int alteração = 1000; //Pausa entre cores //------------------------------------ //Função Setup executa so uma vez quando o Arduino inicia //------------------------------------ void setup() { pinoMode(ledRoxo,OUTPUT); //Configuramos o pino do LED Roxo como saída pinoMode(ledVerde,OUTPUT); //Configuramos o pino do LED Verde como saída pinoMode(ledAzul,OUTPUT); //Configuramos o pino do LED Azul como saída analogWrite(ledRoxo, 255); //Apagamos o LED Roxo (0=Acendido/ 255=Apagado) analogWrite(ledVerde, 255); //Apagamos o LED Verde (0=Acendido/ 255=Apagado) analogWrite(ledAzul, 255); //Apagamos o LED Azul (0=Acendido/ 255=Apagado) } //------------------------------------ //Função Loop executa uma e outra vez em bucle //------------------------------------ void loop() { for (int i=255; i>=0; i--) { //Acendemos o LED Roxo usando PWM analogWrite(ledRoxo, i); //Aumentando de 1 em 1 o valor delay(pausa); //Fazemos uma pequena pausa } for (int i=0; i <= 255; i++){ //Apagamos o LED Roxo usando PWM analogWrite(ledRojo, i); //diminuindo de 1 em 1 o valor delay(pausa); //Fazemos uma pequena pausa } delay(mudança); //O LED Roxo esta apagado. Fazemos uma pequena pausa. for (int i=255; i>=0; i--) { //Acendemos o LED Verde usando PWM analogWrite(ledVerde, i); //Aumentado de 1 em 1 o valor delay(pausa); //Fazemos uma pequena pausa } for (int i=0; i <= 255; i++){ //Apagamos o LED Verde usando PWM analogWrite(ledVerde, i); //diminuindo de 1 em 1 o valor delay(pausa); //Fazemos uma pequena pausa } delay(mudança); //O LED Verde esta apagado. Fazemos uma pequena pausa for (int i=255; i>=0; i--) { //Acendemos o LED Azul usando PWM analogWrite(ledAzul, i); //Aumentando de 1 em 1 o valor delay(pausa); //Fazemos uma pequena pausa } for (int i=0; i <= 255; i++){ //Apagamos o LED Azul usando PWM analogWrite(ledAzul, i); //diminuindo de 1 em 1 o valor delay(pausa); //Fazemos uma pequena pausa } delay(mudança); //O LED Azul esta apagado. Fazemos uma pequena pausa //------------------------------------ //COMBINAÇÃO DAS CORES RGB (MAGENTA) //------------------------------------ for (int i=255; i>=0; i--) { //Acendemos os LEDs Azul e Roxo usando PWM analogWrite(ledAzul, i); //Aumentando de 1 em 1 0 valor analogWrite(ledRoxo, i); delay(pausa); //Fazemos uma pequena pausa } for (int i=0; i <= 255; i++){ //Apagamos os LEDs Azul e Roxo usando PWM analogWrite(ledAzul, i); //diminuindo de 1 em 1 o valor analogWrite(ledRoxo, i); delay(pausa); //Fazemos uma pequena pausa } delay(mudança); //Os LEDs Azul e Roxo esta apagados.Fazemos uma pequena pausa //------------------------------------ //COMBINACÃO DE CORES RGB (BRANCO) //------------------------------------ for (int i=255; i>=0; i--) { //Acendemos todos os LEDS usando PWM analogWrite(ledAzul, i); //Aumentando de 1 em 1 o valor analogWrite(ledRoxo, i); analogWrite(ledVerde, i); delay(pausa); //Fazemos uma pequena pausa } for (int i=0; i <= 255; i++){ //Apagamos todos los LED usando PWM analogWrite(ledAzul, i); //diminuindo de 1 em 1 o valor analogWrite(ledVerde, i); analogWrite(ledRojo, i); delay(pausa); //Fazemos uma pequena pausa } delay(mudança); //Todos os LEDs esta apagados. Fazemos uma pequena pausa } </pre>
Artigo gentilmente cedido por Vida de Silicio
Todos os produtos utilizados neste artigo podem ser encontrados na Loja de Eletrónica e Robótica – ElectroFun.
Gostaram deste artigo? Deixem o vosso comentário no formulário a baixo e partilhem com os vossos amigos.
Não se esqueçam de fazer like na nossa Página no Facebook.
Podem ainda colocar as vossas dúvidas no nosso Forum da Comunidade Arduino em Portugal ou no nosso Grupo no Facebook Arduino Portugal – Qual o teu projeto?