Controlando um LED RGB com Arduino

Programação

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 catado 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.





Código para ligar o led RGB


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(1000);  //Todos os LEDs esta apagados. Fazemos uma pequena pausa

}

Fonte
https://www.arduinoportugal.pt/leds-rgb-controlo-arduino/
Mais Dicas