Módulo – Led RGB
LOS DIODOS RGB
Hasta ahora hemos usado varias combinaciones de LEDS, pero siempre de un color definido.
Habitualmente los rojos y amarillos son los más fáciles de conseguir, pero se pueden comprar también
en tonos azules, verdes y hasta blancos. No suele haber grandes diferencias entre ellos excepto en el
color.
Pero a veces es interesante disponer de una luz piloto que cambie de color según las condiciones. Por
ejemplo, todos identificamos el verde como una señal de OK,
mientras que el rojo indica problemas y el amarillo… bueno pues
algo intermedio.
Poner varios diodos para hacer esto es engorroso y complica el
diseño, así que estaría bien disponer de un diodo al que podamos
indicar que color queremos que muestre. Esto es un LED RGB.
Para quien este acostumbrado al diseño por ordenador ya está
familiarizado con la idea de que podemos generar cualquier color
en la pantalla con la mezcla, en diferentes grados de tres colores
básicos:
• Red : Rojo
• Green: Verde
• Blue: Azul
Es decir RGB, uno de esos acrónimos que surgen continuamente en imagen, TV, etc.
Un LED RGB es en realidad la unión de tres LEDs
de los colores básicos, en un encapsulado
común, compartiendo el Ground (cátodo es
otro nombre más para el negativo).
En función de la tensión que pongamos en cada
pin podemos conseguir la mezcla de color que
deseemos con relativa sencillez
Conexión Eléctrica Conexión al Arduino
.
CÓDIGO DE EJEMPLO
/*
PROGRAMA # 1
#define pinLed1 11 // Pin 11 a R
#define pinLed2 10 // Pin 10 a G
#define pinLed3 9 // Pin 10 a B
void
setup()
{ pinMode(pinLed1,
OUTPUT);
pinMode(pinLed2, OUTPUT);
pinMode(pinLed3, OUTPUT);
}
void loop() { // Verde
digitalWrite(pinLed1, LOW);
digitalWrite(pinLed2, HIGH);
digitalWrite(pinLed3, LOW);
delay(500); // Azul
digitalWrite(pinLed1, LOW);
digitalWrite(pinLed2, LOW);
digitalWrite(pinLed3, HIGH);
delay(500); // Rojo
digitalWrite(pinLed1, HIGH);
digitalWrite(pinLed2, LOW);
digitalWrite(pinLed3, LOW);
delay(500); //Violeta
digitalWrite(pinLed1, HIGH);
digitalWrite(pinLed2, LOW);
digitalWrite(pinLed3, HIGH);
delay(500); //Amarillo
digitalWrite(pinLed1, HIGH);
digitalWrite(pinLed2, HIGH);
digitalWrite(pinLed3, LOW);
delay(500); //Azul Marino
digitalWrite(pinLed1, LOW);
digitalWrite(pinLed2, HIGH);
digitalWrite(pinLed3, HIGH);
delay(500); //Blanco
digitalWrite(pinLed1, HIGH);
digitalWrite(pinLed2, HIGH);
digitalWrite(pinLed3, HIGH);
delay(500);
// Negro - No presenta ningún color
digitalWrite(pinLed1, LOW);
digitalWrite(pinLed2, LOW);
digitalWrite(pinLed3, LOW); delay(500);
}
PROGRAMA # 2
#define pinLed1 11 // Pin 11 a R
#define pinLed2 10 // Pin 10 a G
#define pinLed3 9 // Pin 10 a B
void setup() {
pinMode(pinLed1, OUTPUT);
pinMode(pinLed2, OUTPUT);
pinMode(pinLed3, OUTPUT);
}
void loop() {
#define varfija 15
#define retardo 5
for (int contador=0; contador<255; contador++) {
analogWrite(pinLed1, contador);
analogWrite(pinLed2, varfija);
analogWrite(pinLed3, varfija); delay(retardo);
}
for (int contador=255; contador>0; contador--) {
analogWrite(pinLed1, contador);
analogWrite(pinLed2, varfija);
analogWrite(pinLed3, varfija); delay(retardo);
}
for (int contador=0; contador<255; contador++) {
analogWrite(pinLed1, varfija);
analogWrite(pinLed2, contador);
analogWrite(pinLed3, varfija);
delay(retardo);
}
for (int contador=255; contador>0; contador--) {
analogWrite(pinLed1, varfija);
analogWrite(pinLed2, contador);
analogWrite(pinLed3, varfija); delay(retardo);
}
for (int contador=0; contador<255; contador++) {
analogWrite(pinLed1, contador);
analogWrite(pinLed2, contador);
analogWrite(pinLed3, varfija); delay(retardo);
}
for (int contador=255; contador>0; contador--) {
analogWrite(pinLed1, contador);
analogWrite(pinLed2, contador);
analogWrite(pinLed3, varfija); delay(retardo);
}
for (int contador=0; contador<255; contador++) {
analogWrite(pinLed1, varfija);
analogWrite(pinLed2, varfija);
analogWrite(pinLed3, contador); delay(retardo);
}
for (int contador=255; contador>0; contador--) {
analogWrite(pinLed1, varfija);
analogWrite(pinLed2, varfija);
analogWrite(pinLed3, contador); delay(retardo);
}
for (int contador=0; contador<255; contador++) {
analogWrite(pinLed1, contador);
analogWrite(pinLed2, varfija);
analogWrite(pinLed3, contador); delay(retardo);
}
for (int contador=255; contador>0; contador--) {
analogWrite(pinLed1, contador);
analogWrite(pinLed2, varfija);
analogWrite(pinLed3, contador); delay(retardo);
}
for (int contador=0; contador<255; contador++) {
analogWrite(pinLed1, varfija);
analogWrite(pinLed2, contador);
analogWrite(pinLed3, contador);
delay(retardo);
}
for (int contador=255; contador>0; contador--) {
analogWrite(pinLed1, varfija);
analogWrite(pinLed2, contador);
analogWrite(pinLed3, contador);
delay(retardo);
}
for (int contador=0; contador<255; contador++) {
analogWrite(pinLed1, contador);
analogWrite(pinLed2, contador);
analogWrite(pinLed3, contador);
delay(retardo);
}
for (int contador=255; contador>0; contador--) {
analogWrite(pinLed1, contador);
analogWrite(pinLed2, contador);
analogWrite(pinLed3, contador);
delay(retardo);
}
}
PRACTICA.
• Hacer la programación de un semáforo con el led RGB
• Hacer un juego de luces con el les RGB