La finalidad de este proyecto es la de utilizar un LED RGB de cátodo común y encenderlo utilizando sus tres colores, rojo, verde y azul. Sólo vamos a utilizar las PWM con valores de 255, por lo que solo tenderemos los 3 colores básicos, el rojo, el verde y el azul.
Qué es un LED RGB?
Anteriormente habíamos visto que era un LED y que encendían de un solo color, ahora vemos el LED RGB (red, green, blue) es un LED que en un solo empaque (encapsulado) tenemos los tres colores (rojo, verde y azul), donde podemos utilizar el PWM para generar hasta 16 millones tonos de colores (16.777.216), utilizando valores de 0-255 del color rojo y del verde y el azul.
El pin más largo del LED RGB de ánodo común la cual conectaremos a los 5V del Arduino. El pin de la izquierda corresponde al color rojo(R), los siguientes dos pines corresponden a los colores verde(G) y azul(B) por orden.
Componentes
En el diagrama podemos apreciar las conexiones, utilizaremos los pines PWM 9, 10, 11, donde la salida 11 del Arduino irá a la resistencia del pin rojo del LED, de igual forma la salida 10 del Arduino irá a la resistencia del pin verde del LED RGB y la salida 9 a la resistencia del pin azul del LED RGB, Por último el ánodo del LED RGB irá a la salida de 5V del Arduino.
Código
const int rojo = 11; const int verde = 10; const int azul = 9; void setup() { pinMode(rojo, OUTPUT); pinMode(verde, OUTPUT); pinMode(azul, OUTPUT); } void loop() { analogWrite(rojo, 255); analogWrite(verde, 0); analogWrite(azul, 0); delay(1000); analogWrite(rojo, 0); analogWrite(verde, 255); analogWrite(azul, 0); delay(1000); analogWrite(rojo, 0); analogWrite(verde, 0); analogWrite(azul, 255); delay(1000); }
Comenzaremos a revisar el código, primero vamos a ver las declaraciones de las variables.
const int rojo = 11; const int verde = 10; const int azul = 9;
Declaramos 3 constantes del tipo entero, en las que vamos a conectar cada uno de los ánodos que representan a cada uno de los tres colores y utilizamos 3 pines del Arduino que sean PWM (~). En nuestro caso utilizamos el pin 11 para el ánodo rojo, el pin 10 para el verde y el pin 9 para el azul.
En la función setup:
pinMode(rojo, OUTPUT); pinMode(verde, OUTPUT); pinMode(azul, OUTPUT);
Establecemos los pines asociados a los cátodos rojo, verde y azul como pines de salida.
Y en la función loop:
analogWrite(rojo, 255); analogWrite(verde, 0); analogWrite(azul, 0); delay(1000); analogWrite(rojo, 0); analogWrite(verde, 255); analogWrite(azul, 0); delay(1000); analogWrite(rojo, 0); analogWrite(verde, 0); analogWrite(azul, 255); delay(1000);
Con los LED RGB en de cátodo común en el Arduino es tan simple como energizar (high ) el pin con el color que queremos ver y un bajo o LOW los otros dos colores
Ya vamos a ver esto con el código que nos quedará más claro.
analogWrite(rojo, 255); analogWrite(verde, 0); analogWrite(azul, 0); delay(1000);
Primero vemos analogWrite(rojo, 255)
donde le asignamos un valor análogo 255 al pin rojo del LED, luego analogWrite(verde, 0)
donde asignamos un valor análogo del 0 al pin verde, lo que equivale a un LOW y finalmente analogWrite(azul, 0)
donde asignamos un valor análogo del 0 al pin azul, todo esto nos dará que se encienda el color rojo del LED RGB. Por último hacemos una pausa de un segundo delay(1000)
.
Para ver el color verde tenemos analogWrite(rojo, 0)
, luego analogWrite(verde, 255)
, después analogWrite(azul, 0)
y una pausa de un segundo delay(1000)
.
Finalmente para ver el color azul analogWrite(rojo, 0)
, luego
, después analogWrite(verde, 0)
y una pausa de un segundo analogWrite(azul, 255)
delay(1000)
.
Resumen
Al final el programa hará que se vea el color rojo por un segundo, luego el color verde por un segundo y el verde por un segundo, antes de volver a comenzar el ciclo.
Para experimentar con otros colores diferentes al los del ejercicio anterior podemos buscar los valores RGB de otros colores en https://www.w3schools.com/colors/colors_picker.asp y hacer que nuestro LED cambie a mas colores.
Código 2
Vamos a ver otro código en el cual se usan las salidas PWM para generar más de tres colores con los LED RGB.
int rojo = 11; int verde=10; int azul=9; int val; void setup() { pinMode(rojo, OUTPUT); pinMode(verde, OUTPUT); pinMode(azul, OUTPUT); } void loop() { for(val=255; val>0; val--) { analogWrite(11, val); analogWrite(10, 255-val); analogWrite(9, 128-val); delay(10); } for(val=0; val<255; val++) { analogWrite(11, val); analogWrite(10, 255-val); analogWrite(9, 128-val); delay(10); } }