15/9/2017 Los diodos LED RGB | Tutoriales Arduino
(https://www.prometec.net)
TIENDA (HTTPS://WWW.PROMETEC.NET/TIENDA/) ARDUINO (HTTP://WWW.PROMETEC.NET/INDICE-TUTORIALES)
RASPBERRY PI (HTTPS://WWW.PROMETEC.NET/INDICE-RASPBERRY-PI/) IMPRESORA 3D (HTTPS://WWW.PROMETEC.NET/3D-INDICE/)
FORO (HTTPS://WWW.PROMETEC.NET/FOROS-PROMETEC/) CONTACTO (HTTPS://WWW.PROMETEC.NET/CONTACT/)
LOS DIODOS LED RGB
Circuito con LED RGB
Home (Https://Www.Prometec.Net) Los Diodos LED RGB
OBJETIVOS
Ampliar la experiencia con los pines PWM.
Conocer los LED RGB.
Presentar la función random().
MATERIAL REQUERIDO.
Arduino Uno o similar (http://www.prometec.net/categoria-
producto/arduinos/). Esta sesión acepta cualquier otro modelo de Arduino
(http://www.prometec.net/producto/arduino-uno/)
Una Protoboard (http://www.prometec.net/producto/protoboard-830/).
(http://www.prometec.net/wp-
content/uploads/2014/09/Img_3_4.png)
http://www.prometec.net/rgb-led/ 1/12
15/9/2017 Los diodos LED RGB | Tutoriales Arduino
(http://www.prometec.net/wp-content/uploads/2014/10/11_rgb-
led.jpg) Un diodo LED RGB (http://www.prometec.net/producto/kit-5x-rgb-leds/),
independiente, o bien, con montura keyes.
(http://www.prometec.net/wp-content/uploads/2014/10/Keyes-
RGB-LED.jpg)
na resistencia (http://www.prometec.net/producto/kit-de-resistencias-
variadas/)de 330 Ohmios.
(http://www.prometec.net/wp-
content/uploads/2014/09/Img_3_5.png)
Algunos cables (http://www.prometec.net/producto/cables-dupont-macho-
macho/)de Protoboard..
(http://www.prometec.net/wp-
content/uploads/2014/09/Img_3_6.png)
(http://www.prometec.net/tiendas-online-prometec/)
LOS DIODOS RGB
Hasta ahora hemos usado varias combinaciones de LEDS, pero siempre de un color de nido. 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 identi camos 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.
(http://www.prometec.net/wp- Para quien este acostumbrado al diseño por ordenador ya está familiarizado con la idea de que
content/uploads/2014/10/IMg_11_1.jpg) podemos generar cualquier color en la pantalla con la mezcla, en diferentes grados de tres
colores básicos:
http://www.prometec.net/rgb-led/ 2/12
15/9/2017 Los diodos LED RGB | Tutoriales Arduino
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
(http://www.prometec.net/wp-
content/uploads/2014/10/Img_11_2.jpg)
Para quien haya dibujado con lápices de colores o acuarelas, las mezclas de colores de arriba
les resultará extraña. Esto es porque cuando pintamos en un papel blanco, la mezcla de
colores es substractiva: Si mezclamos los tres colores obtenemos negro, o por lo menos algo
oscuro
En cambio cuando pintamos con luz directamente, la mezcla es aditiva y obtenemos blanco
al mezclar los tres colores básicos. Las reglas de mezcla de color en ambos casos son
opuestas.
Vamos a montar un pequeño circuito que nos permita gobernar el color que emite uno de éstos LEDs de RGB.
ESQUEMA DEL CIRCUITO
http://www.prometec.net/rgb-led/ 3/12
15/9/2017 Los diodos LED RGB | Tutoriales Arduino
(http://www.prometec.net/wp-content/uploads/2014/10/Sesion11_RB_LED_esquema.jpg)
El montaje supone sencillamente conectar el negativo (el pin más largo) a Ground mediante una resistencia que limite la intensidad, y luego
identi car los pines de colores:
El pin más largo en estos LED es el GND.
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 especi caciones del fabricante, o bien identi cando cada PIN. Para identi carlos 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 -.
(http://www.prometec.net/wp-content/uploads/2014/10/Sesion11_RB_LED_bb.jpg)
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.
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 de nir en el setup() los pines a usar:
http://www.prometec.net/rgb-led/ 4/12
15/9/2017 Los diodos LED RGB | Tutoriales Arduino
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
identi cados correctamente los pines, escribiendo un sketch como este:
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);
}
Este programa debería producir una secuencia de rojo, verde, azul, apagado y vuelta a empezar.
Conviene asegurarse de que hemos identi cado correctamente los pines del RGB, porque de lo contrario, las mezclas posteriores de colores no
serán lo que esperamos.
Vamos a ver como averiguar qué mezcla de RGB necesitamos para conseguir un color determinado. Para quienes uséis Windows disponéis del
programa Paint incluido (en el menú de accesorios) y para quienes uséis Mac o Linux tenéis programas similares.
Si arrancáis el Paint(o equivalente) suele tener un selector de colores:
(http://www.prometec.net/wp-content/uploads/2014/10/Img_11_3.jpg)
Pulsándolo aparecerá algo parecido a esto:
http://www.prometec.net/rgb-led/ 5/12
15/9/2017 Los diodos LED RGB | Tutoriales Arduino
(http://www.prometec.net/wp-content/uploads/2014/10/Img_11_4.jpg)
(http://www.prometec.net/wp-content/uploads/2014/10/Img_11_4.jpg)
Si vais pinchando en la zona de colores de la derecha, en la barra vertical aparecen los matices próximos al que habéis pinchado y podéis elegir
el que más os guste. Debajo podéis ver la separación en RGB precisa para conseguir un tono determinado.
Así pues para conseguir ese tono de azulito de la imagen basta con que llaméis a
Color(13, 227, 201) ;
Dado que Arduino nos permite escribir valores de 0 a 255 en los pines digitales, cuando
utilizamos analogWrite(), en la práctica tendremos 255 x 255 x 255 colores diferentes o lo
que es igual: 16.581.375 colores posibles.
La función Color() que hemos creado en esta sesión es muy sencilla pero se va añadiendo a otras que hemos ido creando en sesiones
anteriores con lo que vamos haciendo una pequeña colección de ellas.
El grupo de desarrollo de Arduino ha ido creando también muchas funciones que están disponibles para incorporar en nuestros programas y que
por razones de espacio resultan imposibles de ver más que muy por encima.
Solo como ejemplo introduciremos una de ellas. 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. Probad esto:
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
}
Os generará un ciclo de colores aleatorios bastante psicodélico.
http://www.prometec.net/rgb-led/ 6/12
15/9/2017 Los diodos LED RGB | Tutoriales Arduino
RESUMEN DE LA SESIÓN
Ya conocemos la utilidad y manejo de un LED RGB.
Hemos insistido con la programación de los pines de Arduino como salidas analogías (PWM).
Hemos introducido la función random() que suele ser sorprendentemente útil en un montón de
situaciones diversas.
Anterior Siguiente
(http://www.prometec.net/pines- (http://www.prometec.net/puertas-
cuasi-analogicos/) (https://www.facebook.com/prometecnet-
analogicas/)
1541207239447373/timeline/)
« COMENTARIOS MÁS VIEJOS (HTTPS://WWW.PROMETEC.NET/RGB-LED/COMMENT-PAGE-1/#COMMENTS)
(56) COMMENTS
Reply
(Https://Www.Prometec.Net/Rgb-
Led/?
Replytocom=23624#Respond)
TonyG (http://www.tonyg.net) 28 Ago 2017
Hola
Acabo de incorporar un led de estos a un enredo que estoy haciendo las explicaciones de la página me han venido al pelo.
Se me ha ocurrido hacer algo en el programa que puede que a alguien le resulte de utilidad:
Unos pocos de nes al principio
#de ne NEGRO 0,0,0
#de ne BLANCO 255,255,255
#de ne ROJO 255,0,0
#de ne VERDE 0,255,0
#de ne AZUL 0,0,255
#de ne NARANJA 251,125,5
#de ne AMARILLO 251,248,5
(que son los colores que voy a usar)
Y luego ya puedo poner
Color(AZUL);
o
http://www.prometec.net/rgb-led/ 7/12
15/9/2017 Los diodos LED RGB | Tutoriales Arduino
Color(AMARILLO);
o
Color(NEGRO); // para apagar
Saludos
Reply
(Https://Www.Prometec.Net/Rgb-
Led/?
Replytocom=23279#Respond)
José (http://www.prometec.net/rgb-led/) 02 Ago 2017
Felicitaciones, muy claras tus explicaciones. Instalé el programa en una Arduino DUE y funciona a la perfección.
Un abrazo.
Reply
(Https://Www.Prometec.Net/Rgb-
Led/?
Replytocom=23294#Respond)
Ivan (https://www.prometec.net/members/ivan/) 03 Ago 2017
Gracias Jsé. Un saludo.
Reply
(Https://Www.Prometec.Net/Rgb-
Led/?
Replytocom=23158#Respond)
Tim Bellen 29 Jul 2017
Hola hice un circuito parecido a este, con 3 led, uno R, uno G y uno B y un joystick que al pulsar cambiaba entre los 3 y al moverlo
a dcha e izqda aumentaba o disminuia el valor. Solo encendia el que estuviera seleccionado y el led RGB. Pero hacia cosas raras,
como que al ponerlo a 255,255,255 mostraba color rojo, y parpadeos cuando limité el valor maximo del rojo. Poniendo una
resistencia de 330 delante de cada pin del RGB va perfecto
Reply
(Https://Www.Prometec.Net/Rgb-
Led/?
Replytocom=22574#Respond)
Carlos Alberto 28 Jun 2017
Es chimbo que borren las preguntas, ya me ha pasado varias veces aquí, me gusta el blog, pero es un poco de mal gusto eso.
Reply
(Https://Www.Prometec.Net/Rgb-
Led/?
Replytocom=22639#Respond)
http://www.prometec.net/rgb-led/ 8/12
15/9/2017 Los diodos LED RGB | Tutoriales Arduino
Ivan (https://www.prometec.net/members/ivan/) 02 Jul 2017
Hola Carlos, no borramos ningún comentario a no ser que sea de mal gusto, pero cada cierto tiempo tenemos que
limpiar algunas páginas porque si no el tiempo de carga se resiente demasiado. Un saludo.
Carlos Alberto (http://guarrodesign.com.ve) 02 Jul 2017
Hola! Wow me disculpo en serio, unas horas después pude ver que la pregunta estaba nuevamente, lo
que creo que sucede es que la página tiene algun bug que oculta las preguntas nuevas y luego las vuelve
aReply
mostrar, y debe ser eso ya que estoy seguro de que no publiqué nada indebido. deberían de veri car
eso hagan la prueba! Nuevamente mil disculpas!
(Https://Www.Prometec.Net/Rgb-
Led/?
Replytocom=22648#Respond)
Reply
(Https://Www.Prometec.Net/Rgb-
Led/?
Replytocom=22573#Respond)
Carlos Alberto 28 Jun 2017
Hola! tengo una duda, hice la conexión tal como la muestras pero no enciende, solo encienden si conecto R,G ó B, a negativo y el
cátodo a positivo, porque sucede eso?
Reply
(Https://Www.Prometec.Net/Rgb-
Led/?
Replytocom=22638#Respond)
Ivan (https://www.prometec.net/members/ivan/) 02 Jul 2017
Hola Carlos, nosotros estamos usando un RGB de cátodo común. El tuyo seguramente sea de ánodo común, así que la
conexión falla. No tienes más que hacer una búsqueda rápida y te saldrán montones de ejemplos. Un saludo.
Carlos Alberto (http://guarrodesign.com.ve) 02 Jul 2017
A ok, si debe ser eso, gracias por la respuesta, ya estaba pensando que el fabricante se había vuelto loco
y los había hecho mal xD voy a buscar!
Reply
(Https://Www.Prometec.Net/Rgb-
Led/?
Replytocom=22649#Respond)
Reply
(Https://Www.Prometec.Net/Rgb-
Led/?
Replytocom=20983#Respond)
Chopi (https://www.prometec.net/members/lucas/) 23 Abr 2017
Bueno, despues de volverme loco un rato y que nada funcionara, me di cuenta que me sucedio como a Astola y Mariano. Compre
un led RGB de ánodo común. Ya que no entiendo bien el comentario de Ivan, y qeu no ocurra lo que comenta Astola yo lo conseguí
de la siguiente forma, que no se si estaría correcto del todo, pero funcionar, funciona.
void setup() {
for ( int i = 2 ; i < 5 ; i++ ) // Usamos los pines 2, 3 y 4.
pinMode ( i , OUTPUT ) ;
http://www.prometec.net/rgb-led/ 9/12
15/9/2017 Los diodos LED RGB | Tutoriales Arduino
void Color ( int R , int G , int B ){ // OjO este led es anodo comun
analogWrite ( 2 , 255-R ) ; // Rojo
analogWrite ( 3 , 255-G ) ; // Verde
analogWrite ( 4 , 255-B ) ; // Azul
}
void loop() {
Color ( 255 , 0 , 0 ) ;
delay ( 300 ) ;
Color ( 0 , 255 , 0 ) ;
delay ( 300 ) ;
Color ( 0 , 0 , 255 ) ;
delay ( 300 ) ;
Color ( 0 , 0 , 0 ) ;
delay ( 300 ) ;
}
Reply
(Https://Www.Prometec.Net/Rgb-
Led/?
Replytocom=19983#Respond)
Astola 25 Mar 2017
Hola, a mi me ha pasado lo mismo que a Mariano y gracias a Iván lo he solucionado, pero he notado que para encender un color
tengo que darle valor 0 en vez de 255 ¿es normal? Un saludo y enhorabuena por la calidad y sencillez de los tutoriales.
Reply
(Https://Www.Prometec.Net/Rgb-
Led/?
Replytocom=20017#Respond)
Ivan (https://www.prometec.net/members/ivan/) 27 Mar 2017
Efectivamente los de ánodo común funcionan así. Podrías “naturalizar” los valores creando variables que sean del tipo
R=255-x; así dando valores a x de 0 a 255 tendrías valores de 255 a 0 en R. Un saludo.
Reply
(Https://Www.Prometec.Net/Rgb-
Led/?
Replytocom=19458#Respond)
Mariano (http://www.prometec.net/rgb-led/) 08 Mar 2017
Hola,
Me acabo de comprar leds RGB y he montado el circuito. He cargado el programa en el IDE de arduino UNO pero no se enciende
nada.
No se dónde esta mi fallo.Los leds son : Diodo Led RGB 5mm Ultra Brillo 4 pines tricolor anodo comun pin multicolor.
Gracias
http://www.prometec.net/rgb-led/ 10/12
15/9/2017 Los diodos LED RGB | Tutoriales Arduino
Reply
(Https://Www.Prometec.Net/Rgb-
Led/?
Replytocom=19493#Respond)
Ivan (https://www.prometec.net/members/ivan/) 09 Mar 2017
Hola Mariano, el problema es que en la sesión usamos rgb de cátodo común y el tuyo es de ánodo común. Esto
signi ca que tendrías que conectarlo a 5v por medio de una resistencia en vez de a GND. Si tienes dudas en como
montarlo busca en “google montaje rgb ánodo común arduino” y seguro que encuentras ejemplos. La programación es
la misma, tendrías que cambiar el montaje. Un saludo.
GIVE A REPLY
Message
Name (required) Email (required)
URL
Post comment
WordPress Anti-Spam by WP-SpamShield (https://wordpress.org/extend/plugins/wp-spamshield/)
Copyright Prometec (http://www.prometec.net) (https://www.facebook.com/pages/pro
(https://plus.google.com
(https://www.yout
http://www.prometec.net/rgb-led/ 11/12
15/9/2017 Los diodos LED RGB | Tutoriales Arduino
http://www.prometec.net/rgb-led/ 12/12