Está en la página 1de 4

Un LED RGB, veremos cómo controlarlo con Arduino.

Para esto
utilizaremos 3 salidas PWM que nos permiten establecer
distintas intensidades del LED. Usaremos un LED RGB de cátodo común
ya que así los valores en intensidad podrán ir de 0 a 255 con la función
analogWrite().
Para esto, necesitamos:
1 Arduino UNO Rev3
1 LED RGB cátodo común
3 Resistencias 220[ohm]
4 Cables de conexión
El siguiente diagrama muestra cómo se deben conectar las cosas.
Usaremos los pines 9, 10 y 11 los cuales soportan PWM.
Los cables Rojo, Azul y Verde, indican el pin del color respectivo. El
cable negro a su vez indica el cátodo del LED que debe ir a GND (tierra)
para cerrar el circuito.

Una vez hecha esta conexión, procedemos a compilar y cargar el


siguiente código:
/*
Programa para controlar un LED RGB con arduino.
Usando las salidas PWM se puede controlar la intensidad de cada color para hacer las mezclas.
Se hacen dos funciones:
rgbon(): Muestra los 3 colores principales uno despues de otro (rojo, verde y azul)
colors(): Permite elegir entre tres colores (amarillo (y), narajno (o) o rosado (p))
usando sus siglas en ingles

Materiales:
1 Arduino UNO Rev3
1 LED RGB de 4 patas catodo comun
3 resistencias de 220[ohm]
cables de conexion

Autor: Arduino UTFSM


Fecha: 22 Mayo 2014
*/

/*-----Declaracion de variables para cada color R G B-----*/


int rled = 11; // Pin PWN 11 para led rojo
int bled = 10; // Pin PWM 10 para led azul
int gled = 9; // Pin PWM 9 para led verde

/*----Declaracion de variables auxiliares-----*/


int i; // Variable para ciclos repetitivos
int repeat = 5; // Variables para cantidad limite de repeticiones

void setup() {
/*----- Se inicializan pines PWM como salida*/
pinMode(rled, OUTPUT);
pinMode(bled, OUTPUT);
pinMode(gled, OUTPUT);
}

void loop() {

for(i=0; i<repeat; i++) //Se repite la ejecucion de la funcion rgbon() "repeat" veces
rgbon();
delay(1000); //Se espera 1 segundo
colors('y'); //Se enciende el LED en color amarillo (y de yellow)
delay(1000);
colors('o'); //Se enciende el LED en color naranko (o de orange)
delay(1000);
colors('p'); //Se enciende el LED en color rosado (p de pink)
delay(1000);
}

/*-----Funcion para mostrar colores principales cada 500 ms-----*/


void rgbon(){
analogWrite(rled,255); // Se enciende color rojo
delay(500); // Se esperan 500 ms
analogWrite(rled,0); // Se apaga color rojo
analogWrite(bled,255); // Se enciende color azul
delay(500); // Se esperan 500 ms
analogWrite(bled,0); // Se apaga color azul
analogWrite(gled,255); // Se enciende color verde
delay(500); // Se esperan 500 ms
analogWrite(gled,0); // Se apaga colo verde
}

/*-----Funcion que permite escoger entre color amarillo, naranjo o rosado-----*/


void colors(char color){ //La funcion recibe un parametro que se guarda en variable color

switch(color){ //Se compara variable color con dato guardado


case 'y': analogWrite(rled,255); // Si color == 'y' se enciende color amarillo
analogWrite(gled,255); // Mezclando r = 255 / g = 255 / b = 0
analogWrite(bled,0);
break;
case 'o': analogWrite(rled,255); // Si color == 'o' se enciende color naranjo
analogWrite(gled,180); // Mezclando r = 255 / g = 180 / b = 0
analogWrite(bled,0);
break;
case 'p': analogWrite(rled,255); // Si color == 'p' se enciende color rosado
analogWrite(gled,0); // Mezclando r = 255 / g = 0 / b = 255
analogWrite(bled,255);
break;
}
}

En este código se inventaron dos funciones, las cuales se explican


detalladamente en el mismo.

Pueden crear un sin fin de juegos de intensidades para modificar el


comportamiento del LED RGB a su gusto, también se pueden modificar
las frecuencias de cambio entre los colores para producir efectos de
rapidez, cámara lenta, etc.

Para saber qué intensidad escribir para cada color pueden ayudarse de
un programa editor de gráficos como Paint, Photoshop, GIMP, etc. abrir
la paleta de colores y elegir los números se que indican en las pestañas
RGB. A continuación damos un ejemplo usando el programa GIMP
Podemos apreciar los valores R = 0, G = 255 y B = 255 para crear el
color celeste. De la misma forma pueden encontrar los valores
necesarios para las demás gamas de colores. Cabe señalar que un color
más opaco simplemente baja la intensidad del led y no necesariamente
se verá más gris, si no que simplemente más “apagado”.