De conformidad con el Reglamento (UE) 2016/679 del Parlamento Europeo y del Consejo de 27 de abril de 2016 relativo a la protección de las personas físicas en lo que respecta al tratamiento de datos personales y a la libre circulación de estos datos y (Reglamento General de Protección de Datos) ofrecemos la posibilidad de aceptar o no el uso de cookies mientras navega por nuestro sitio web. Puede obtener más información en nuestra web
El espacio exclusivo de robótica educativa
Todo sobre productos Mobile, Connect, Outdoor y Robótica Educativa
Proyecto 5 Build & Code: Controlador de LED RGB
Published in Robótica - 2 Mayo 2017

Ejercicio:


Construye y programa un circuito para controlar los colores y brillo que produce un LED RGB. Un LED RGB es un LED que puede emitir luz de cualquier color a partir de la combinación de sus tres colores básicos: rojo (Red), verde (Green), azul (Blue).


Utilizarás 3 potenciómetros, uno para cada color del LED. Según la combinación de brillo de cada uno, puedes formar cualquier color.


Material:


  • 3 — Resistencias de 220
  • 3 — Potenciómetros 10k
  • 1 — Placa Build&Code UNO
  • 1 — ProtoBoard
  • 1 — LED RGB

¿Qué es un LED RGB?


Un LED RGB es la unión de tres LEDs de los colores básicos (rojo, verde y azul) en un encapsulado común, En función de la tensión que pongamos en cada pin podemos conseguir la mezcla de color que deseemos con relativa sencillez.


Un LED RGB tiene 4 patas, 1 para controlar cada color y la que queda es por donde entra o sale la electricidad, dependiendo de si es de ánodo (la pata más larga es por donde entra la electricidad) o cátodo común (la pata más larga es por donde sale la electricidad).



Delante de cada una de las patas de color del LED RGB siempre se tendrá que poner una resistencia con un valor suficiente para no romper el LED, en este caso nosotros pondremos una resistencia de 220 ohmios.


¿Qué es un Potenciómetro?

 

 

Un potenciómetro es un dispositivo que permite variar su resistencia de forma manual, entre un valor mínimo Rmin, (normalmente 0 ohmios) y un valor máximo Rmax. Los valores habituales de Rmax son 5k, 10k o 20k ohmios.

 

Un potenciómetro es una resistencia variable que va desde un valor mínimo a otro valor máximo. Al hacer girar el potenciómetro entre un mínimo y un máximo hacemos variar de manera proporcional al giro el valor de la resistencia interna.

 

Normalmente un potenciómetro tiene tres pines. Uno de los 2 pines de los extremos está unido al valor de la resistencia mínima Rmin y otro al valor de la resistencia máxima Rmax. El pin restante corresponde al valor variable de la resistencia, y este valor es el resultado de la posición del potenciómetro, está más cerca o más lejos de los valores Rmin o Rmax.

 

Los pines de los extremos se conectan a 5V y GND de la Build&Code UNO, y el 3er pin (que su valor depende del movimiento del potenciómetro) se conecta a uno de los pins analógicos de la Build&Code UNO.

 

Como todo sensor analógico, el potenciómetro enviará información a la entrada analógica. La información irá desde 0 a 1023. Cuando el potenciómetro esté en su valor mínimo enviará un 0, cuando esté en su valor máximo, enviará un 1023, y si está en su valor medio enviará un 516.

 

Circuito:

 

La placa protoboard recibe la electricidad del pin de 5V de Build&Code UNO y vuelve de la protoboard a la Build&Code UNO a través del pin GND (tierra). Todos los GND del circuito has de conectarlos entre sí para que todos tengan el mismo valor de GND.

 

Conecta el pin central de tus sensores, los potenciómetros, a un pin analógico diferente cada uno, ya que el potenciómetro es un sensor analógico. Cada uno de los pines del LED RGB los conectaras a un pin digital PWM que será el encargado de hacerlo brillar cada color más o menos en función de la lectura recibida del sensor.


El color negro es el GND, donde todos los Grounds de cada componente están conectados entre sí y al GND de la placa.

 

El color amarillo son los 5V, que alimentan a cada uno de los potenciómetros.

 

Al LED RGB llegan tres cables azules de 3 salidas digitales, que pueden trabajar como PWM: 9, 10 y 11.

 

Y 3 cables grises que van del pin central de cada uno de los potenciómetros a 3 entradas analógicas.

 

Programa en código en Arduino:


Realizarás un programa que estará continuamente leyendo la información de los potenciómetros. En función de la lectura que mida cada sensor, harás que brille más o menos cada color básico del LED RGB.


Cada potenciómetro hará lecturas de 0 a 1023, en función de cuánto lo hayas girado.


El pin digital PWM estará trabajando como un pin de salida, pero en vez de dar un valor alto o bajo de manera constante, éste puede hacer cambios muy rápidos de valores para jugar con valores medios, lo cual permite emitir distintos niveles de brillo.


Es decir, que si en 1 segundo el LED se enciende y apaga 100 veces, y está el mismo tiempo encendido que apagado (50 veces encendido y 50 veces apagado), nuestro ojo verá el LED con un brillo equivalente a una potencia del 50% del total, mientras que si estuviese mucho más tiempo encendido que apagado nuestro ojo detectaría un brillo muy leve en el LED.


El PWM tiene una resolución de 256 estados, va desde 0 a 255. Si escribes un 15, apenas se encenderá, ya que estará más tiempo apagado que encendido, si escribes un 127, lo verás brillar con el 50% de la potencia máxima, ya que estará el 50% del tiempo encendido y el otro 50 apagado y si le escribes un valor de 250 prácticamente lo verás como si brillara al 100%.


Para relacionar la entrada analógica del potenciómetro y la del pin digital PWM, hay que dividir los 2 valores máximos:



Esto quiere decir que si divides los valores del sensor entre 4 estarás haciendo un relación lineal entre el giro del potenciómetro y el brillo de cada color del RGB.


Para construir los colores a partir de los colores primarios RGB esta tabla te será de gran ayuda:



int entrada0 = A0; //Definimos las 3 entradas analógicas A0, A1, A2
int entrada1 = A1;
int entrada2 = A2;

int LEDR = 9;  //Definimos las 3 salidas digitales PWM
int LEDG = 10;
int LEDB = 11;

int valor0=0; //creamos las 3 variables valor de tipo entero para almacenar los valores guardadas de las lecturas analógicas
int valor1=0;
int valor2=0;

void setup ()
{
 Serial.begin(9600); //iniciamos comunicación para mostrar por pantalla la información recibida de la placa
 
 pinMode(LEDR,OUTPUT); // los pins digitales serán de salida
 pinMode(LEDG,OUTPUT);
 pinMode(LEDB,OUTPUT);
}

void loop()
{

 int valor0 = analogRead(entrada0); // lee el valor del potenciómetro 0
 int valor1 = analogRead(entrada1); // lee el valor del potenciometro 1
 int valor2 = analogRead(entrada2); // lee el valor del potenciometro 2


 analogWrite(LEDR, valor0/4); // Como las entradas analógicas tienen una resolución máxima de 1024 estados y el PWM tiene una resolución de 256, tendremos que dividir el valor de la entrada
 //analógica entre 4 para hacer proporcional la lectura de la entrada analógica con la intensidad de salida de la salida digital PWM
 analogWrite(LEDG, valor1/4);
 analogWrite(LEDB, valor2/4);
}

Código en mBlock


También puedes ver:

Escribe un comentario
* Campos obligatorios