Encender un led RGB usando Modulación de Pulsos con un Arduino

Cómo un LED RBG puede iluminarse con los tres colores primarios: Rojo, Verde y Azul, y cómo podemos utilizar esos colores primarios para mezclarlos y crear otros colores. Por ejemplo: Amarillo (Rojo y Verde), Cian (Verde y Azul), Magenta (Azul y Rojo), o Blanco (Rojo, Azul y Verde).

Con un Arduino, se puede variar la intensidad de cada color para conseguir el color deseado.

En este ejemplo montamos un circuito que nos permita manipular el color mostrado por un LED RGB y realizaremos un programa que muestre los colores antes mencionados.

En la imagen podemos ver la configuración de los pines de un LED RGB y el circuito que debemos montar para realizar nuestro ejemplo.

Utilizaremos los pines 9,10 y 11 (pines que permiten funcionar como salidas analógicas usando PWM) de nuestro Arduino, conectando los pines de los colores del LED RGB tal y como muestra el siguiente código:

/* Programa de ejemplo del uso de LED RGB
Programado por: Pedro Francisco Vidal López (https://www.facebook.com/pfvidal)
Difundido por: ArduinoSpain :
http://www.facebook.com/arduinospain
https://osiberia.org/arduino-spain/
Funcionamiento:
El primer bucle “for” de la función “loop” muestra los colores primarios comenzando la modulación PWM en 250 y finalizando en 255.
El segundo bucle “for” muestra los siguientes colores mostrando la combinación de dos colores primarios para obtener: Amarillo, Cian, Magenta y Blanco.
Nota:
Este programa no pretende enseñar a programar, ni utilizar técnicas o algoritmos complejos, sino ilustrar de la forma más sencilla posible el ejemplo que nos ocupa.

*/
int pin_red =9; // Pin A9 a la patilla roja del LED RGB
int pin_green=10; // Pin A10 a la patilla verde del LED RGB
int pin_blue=11; // Pin A11 a la patilla azul del LED RGB
int var =0 ;
int var1 = 0;
void setup()
{
}
Void loop()
{
For (var=250;var<255;var++)
{
    analogWrite(pin_red,var); // Rojo
    analogWrite(pin_green,0);
    analogWrite(pin_blue,0);
    delay(500);
    analogWrite(pin_red,0); // Verde
    analogWrite(pin_green,var);
    analogWrite(pin_blue,0);
    delay(500);
    analogWrite(pin_red,0); // Azul
    analogWrite(pin_green,0);
    analogWrite(pin_blue,var);
    delay(500);
}
for(var=250;var<255;var++)
{
    analogWrite(pin_red,var); // Rojo + Verde = Amarillo
    analogWrite(pin_green,var);
    analogWrite(pin_red,0);
    delay(500);
    analogWrite(pin_green,var); // Verde + Azul = Cian
    analogWrite(pin_blue,var);
    analogWrite(pin_red,0);
    delay(500);
    analogWrite(pin_blue,var); // Azul + Rojo = Magenta
    analogWrite(pin_red,var);
    analogWrite(pin_green,0);
    delay(500);
    analogWrite(pin_green,var); // Verde + Rojo + Azul = Blanco
    analogWrite(pin_red,var);
    analogWrite(pin_blue,var);
    delay(500);
    }
}

Dejar un comentario