La finalidad de este proyecto es la de utilizar un LED RGB de ánodo 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, 0); analogWrite(verde, 255); analogWrite(azul, 255); delay(1000); analogWrite(rojo, 255); analogWrite(verde, 0); analogWrite(azul, 255); delay(1000); analogWrite(rojo, 255); analogWrite(verde, 255); analogWrite(azul, 0); 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, 0); analogWrite(verde, 255); analogWrite(azul, 255); delay(1000); //Enciende el color rojo analogWrite(rojo, 255); analogWrite(verde, 0); analogWrite(azul, 255); delay(1000); //Enciende el color verde analogWrite(rojo, 255); analogWrite(verde, 255); analogWrite(azul, 0); delay(1000); //Enciende el color azul
Para que este ejercicio nos quede claro debemos entender en un LED RGB en el Arduino para que se encienda un color debemos energizar de forma inversa el color que queremos visualizar, por ejemplo si queremos visualizar el color rojo debemos darle un valor alto al verde y al azul.
Ya vamos a ver esto con el código que nos quedará más claro.
analogWrite(rojo, 0); analogWrite(verde, 255); analogWrite(azul, 255); delay(1000);
Primero vemos analogWrite(rojo, 0)
donde le asignamos un valor análogo 0 al pin rojo del led, luego analogWrite(verde, 255)
donde asignamos un valor análogo del 255 al pin verde, lo que equivale a un HIGH y finalmente analogWrite(azul, 255)
donde asignamos un valor análogo del 255 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)
. Tal como habíamos dicho anteriormente energizamos inversamente el verde y el azul para ver el rojo.
Para ver el color verde tenemos analogWrite(rojo, 255)
, luego analogWrite(verde, 0)
, después analogWrite(azul, 255)
y una pausa de un segundo delay(1000)
.
Finalmente para ver el color azul
, luego analogWrite(rojo, 255)
, después analogWrite(verde, 255)
y una pausa de un segundo analogWrite(azul, 0)
.delay(1000)
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.