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 }