Вы находитесь на странице: 1из 12

COLEGIO TOBERIN INSTITUCIÓN EDUCATIVA DISTRITAL

TECNOLOGIA- ARDUINO

PRACTICA7. - LED. RGB

OBJETIVO

• Ampliar la experiencia con los pines PWM.


• Conocer los LED RGB.
• Presentar la función random().

Actividad
Realizar el montaje, y de acuerdo a cada una de las pruebas, realizar la modificación del
código, comprender y explicar. Realizar los tres. Entregables(videos, esquema y código)

Para. La construcción del. Código, hacerlo. Utilizando los. Símbolos. De. comentarios /*. */.
O. //. Habilitando o. deshabilitando. Cada una de. Las. Pruebas.

COMPONENTES

ARDUINO UNO

PROTOBOARD

LED RGB, O LED. CON MONTURA KEYES

MAGISTER CESAR EFREN ROJAS TARAZONA pág. 1


COLEGIO TOBERIN INSTITUCIÓN EDUCATIVA DISTRITAL

TECNOLOGIA- ARDUINO

CABLE

RESISTENCIA. DE. 330. OHM

CONCEPTOS. PREVIOS

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.

Es decir RGB, uno de esos acrónimos que surgen continuamente en imagen, TV, etc.

MAGISTER CESAR EFREN ROJAS TARAZONA pág. 2


COLEGIO TOBERIN INSTITUCIÓN EDUCATIVA DISTRITAL

TECNOLOGIA- ARDUINO

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

ESQUEMA. ELECTRONICO

El montaje supone sencillamente conectar el negativo (el pin más largo) a Ground mediante
una resistencia que limite la intensidad, y luego identificar los pines de colores:

El pin más largo en estos LED es el GND.

MAGISTER CESAR EFREN ROJAS TARAZONA pág. 3


COLEGIO TOBERIN INSTITUCIÓN EDUCATIVA DISTRITAL

TECNOLOGIA- ARDUINO

Al lado de GND hay dos pines a un lado y uno solitario al otro. Por lo normal el solitario es
el rojo R.
Así pues el pin out (patillaje) de un RGB LED suele ser R, GND, G, B.

De todos modos conviene asegurarse leyendo las especificaciones del fabricante, o bien
identificando cada PIN. Para identificarlos basta conectar el GND a nuestro Arduino e ir
probando cada una de las patas independientemente para ver qué color producen.

Si tu RGB tiene una montura Keyes, no tendrás que hacer esto, porque los pines vienen
marcados y GND viene rotulado como -.

ESQUEMA. PICTORICO

Atención, en contra de la norma habitual, en este caso el cable rojo no indica la tensionVcc,
sino el pin de gobierno del LED rojo.
En este esquema hemos utilizado los pines 9, 10 y 11. Podemos usar otros pero aseguraros
de que puedan hacer PWM(los que tienen ~) para poder poner distintas intensidades.

MAGISTER CESAR EFREN ROJAS TARAZONA pág. 4


COLEGIO TOBERIN INSTITUCIÓN EDUCATIVA DISTRITAL

TECNOLOGIA- ARDUINO

CODIFICION. PROGRAMA DE CONTROL RGB

Dado que nuestra idea es poder mezclar las tonalidades de los componentes RGB para
generar diferentes matices de colores, parece buena idea escribir una función que haga esta
mezcla de colores y a la que podamos recurrir de forma abstracta y práctica (además de
para encapsular una utilidad curiosa, a la que podremos recurrir en futuros ejemplos y de
paso insistir en el concepto de función).
Lo primero sería definir en el setup() los pines a usar:

void setup()
{
for (int i =9 ; i<12 ; i++)
pinMode(i, OUTPUT);
}

Y después podríamos escribir una función como esta

void Color(int R, int G, int B)


{
analogWrite(9 , R) ; // Red - Rojo
analogWrite(10, G) ; // Green - Verde
analogWrite(11, B) ; // Blue - Azul
}

De este modo tendríamos fácil llamar a Color ( 0, 255, 0) para el verde. De hecho vamos a
empezar asegurándonos de que tenemos identificados correctamente los pines,
escribiendo un sketch como este:

void loop()
{ Color(255 ,0 ,0) ;
delay(500);
Color(0,255 ,0) ;
delay(500);

MAGISTER CESAR EFREN ROJAS TARAZONA pág. 5


COLEGIO TOBERIN INSTITUCIÓN EDUCATIVA DISTRITAL

TECNOLOGIA- ARDUINO

Color(0 ,0 ,255) ;
delay(500);
Color(0,0,0);
delay(1000);
}

Para ver como averiguar qué mezcla de RGB necesitamos para conseguir un color
determinado. Windows dispone del programa Paint incluido (en el menú de accesorios)

Para. Obtener. El. Color. Azul de. La. Imagen. Tienen. Que. Colocar
Color(13, 227, 201) ;

MAGISTER CESAR EFREN ROJAS TARAZONA pág. 6


COLEGIO TOBERIN INSTITUCIÓN EDUCATIVA DISTRITAL

TECNOLOGIA- ARDUINO

La función La función random( N ) devuelve un valor al azar, comprendido entre 0 y N y en


este caso, se presta especialmente bien para generar colores aleatorios en nuestro LED
RGB:

void setup() //Prog_11_3


{
for (int i =9 ; i<12 ; i++)
pinMode(i, OUTPUT);
}

void loop()
{
Color(random(255), random(255), random(255)) ;
delay(500);
}

void Color(int R, int G, int B)


{
analogWrite(9 , R) ; // Rojo
analogWrite(10, G) ; // Green - Verde
analogWrite(11, B) ; // Blue - Azul
}

ADICIONALES Y UTILIDADES

PRUEBA. 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);

MAGISTER CESAR EFREN ROJAS TARAZONA pág. 7


COLEGIO TOBERIN INSTITUCIÓN EDUCATIVA DISTRITAL

TECNOLOGIA- ARDUINO

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);
}

MAGISTER CESAR EFREN ROJAS TARAZONA pág. 8


COLEGIO TOBERIN INSTITUCIÓN EDUCATIVA DISTRITAL

TECNOLOGIA- ARDUINO

PRUEBA. 2 ENCENDER RGB

void setup()
{
for (int i =9 ; i<12 ; i++)
pinMode(i, OUTPUT);
}

void Color(int R, int G, int B)


{
analogWrite(9 , R) ; // Red - Rojo
analogWrite(10, G) ; // Green - Verde
analogWrite(11, B) ; // Blue - Azul
}
void loop()
{ Color(255 ,0 ,0) ;
delay(500);
Color(0,255 ,0) ;
delay(500);
Color(0 ,0 ,255) ;
delay(500);
Color(0,0,0);
delay(1000);
}

PRUEBA 3. RGB. RANDOM

void setup()
{
for (int i =9 ; i<12 ; i++)
pinMode(i, OUTPUT);
}

void loop()
{
Color(random(255), random(255), random(255)) ;
delay(500);
}

void Color(int R, int G, int B)


{

MAGISTER CESAR EFREN ROJAS TARAZONA pág. 9


COLEGIO TOBERIN INSTITUCIÓN EDUCATIVA DISTRITAL

TECNOLOGIA- ARDUINO

analogWrite(9 , R) ; // Rojo
analogWrite(10, G) ; // Green - Verde
analogWrite(11, B) ; // Blue - Azul
}

PRUEBA. 4. DESVANECIDO DE RBG

#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);

MAGISTER CESAR EFREN ROJAS TARAZONA pág. 10


COLEGIO TOBERIN INSTITUCIÓN EDUCATIVA DISTRITAL

TECNOLOGIA- ARDUINO

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);

MAGISTER CESAR EFREN ROJAS TARAZONA pág. 11


COLEGIO TOBERIN INSTITUCIÓN EDUCATIVA DISTRITAL

TECNOLOGIA- ARDUINO

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);
}
}

MAGISTER CESAR EFREN ROJAS TARAZONA pág. 12

Вам также может понравиться