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
}


