Inicio » Leds para Arduino » LED RGB » Led RGB con potenciómetros

Anteriormente vimos cómo conectar un led RGB con Arduino y cómo generar colores de forma aleatoria.

En esta ocasión vamos a ver cómo regular la intensidad de un led RGB con potenciómetros.

Materiales

Voy a utilizar un led RGB de cátodo común y 3 potenciómetros de tipo trimmer.

Si prefieres usar otro tipo de potenciómetro, la implementación es exactamente igual.

Si quieres usar un led RGB de ánodo común, entonces echa un vistazo a este turorial para hacer las conexiones correctamente.

Dicho todo esto, aquí te dejo la lista de los materiales que necesitamos:

Una placa Arduino (Yo usaré Arduino UNO)
Un LED RGB de cátodo común
2 resistencias de 100Ω
Una resistencia de 150Ω
Un pot trimmer de 10KΩ (103)
Cables
Una protoboard
Un ordenador con el IDE de Arduino instalado

Conexiones

El circuito para regular la intensidad de un led RGB con potenciómetros es el siguiente:

Led RGB con potenciómetros y Arduino

Alimentación

Vamos a empezar comentando las conexiones de alimentación.

Como puedes ver, he conectado un pin GND (cable negro) con la línea negativa de la protoboard y el pin de 5V (cable naranja) con la línea positiva. Lo hago así por comodidad. Después será mucho más fácil conectar el resto de componentes.

Led RGB

Ahora echemos un vistazo al led RGB:

  • El ánodo rojo lleva una resistencia de 150Ω y va conectado al pin digital 6 (cable rojo).
  • El ánodo verde lleva una resistencia de 100Ω y va conectado al pin digital 5 (cable verde).
  • El ánodo verde lleva una resistencia de 100Ω y va conectado al pin digital 3 (cable azul).
  • El cátodo, que en mi caso es el común, va conectado a GND (cable negro).

Los pines digitales los he elegido así intencionadamente puesto que necesitamos que soporten PWM. De esa forma podremos cambiar las intensidades y conseguir diferentes combinaciones de colores. Recuerda, los pines PWM siempre tienen una virgulilla al lado (~).

Potenciómetros

Y por último, los potenciómetros. Si no tienes claro cómo se conecta un potenciómetro con Arduino, te dejo aquí un tutorial que te será de utilidad: Cómo conectar un pot trimmer con Arduino.

Cada potenciómetro regulará un color, por eso son 3. El primero será el encargado de regular el color rojo, el segundo regulará el color verde y el tercero el azul. Por claridad he puesto el cable de cada potenciómetro del color correspondiente.

Cada potenciómetro está conectado a un pin analógico. El rojo al pin A3, el verde al A4 y al azul al A5. Esto es así porque Arduino recibirá valores comprendidos entre 0 y 1023 dependiendo de la posición del dial, y eso con un pin digital no lo podemos hacer.

Como yo he conectado GND al pin izquierdo del potenciómetro (cable negro) y 5V al derecho (cable naranja), el valor 0 lo recibimos cuando el potenciómetro está totalmente girado a la izquierda, y valor 1023 cuando esté girando totalmente a la derecha. Cualquier posición intermedia devolverá un valor dentro de ese rango.

Ya tenemos todo conectado. Vamos a por el sketch

Sketch

Este es el sketch completo que vamos a usar:

//DECLARACIONES
//led:
const int R = 6;
const int G = 5;
const int B = 3;
//potenciómetros
const int POT_R = A3;
const int POT_G = A4;
const int POT_B = A5;

//CONFIGURACIÓN
void setup() {
  pinMode (R, OUTPUT);
  pinMode (G, OUTPUT);
  pinMode (B, OUTPUT);
}

//FUNCIÓN LOOP
void loop() {
  int red = analogRead(POT_R)/4;
  int green = analogRead(POT_G)/4;
  int blue = analogRead(POT_B)/4;

  analogWrite(R, red);
  analogWrite(G, green);
  analogWrite(B, blue);
}

Declaraciones

Vamos a declarar por un lado constantes para los pines digitales en los que está conectado el led RGB:

const int R = 6;
const int G = 5;
const int B = 3;

Como puedes apreciar, yo las he llamado R, G y B. El ánodo rojo (R) lo he conectado al pin 6, el ánodo verde(G) al pin 5 y el ánodo azul(B) al pin 3. Por eso les asigno esos valores.

Las siguientes constantes son las asociadas a los pines analógicos en los que hemos conectado los potenciómetros:

const int POT_R = A3;
const int POT_G = A4;
const int POT_B = A5;

Para que quede claro he puesto la letra del color a cada constante. En mi caso, el potenciómetro rojo (POT_R) está conectado con el pin anaógico A3, el verde (POT_G) está conectado al pin A4 y el azul (POT_B) al pin A5.

Si quieres utilizar otros pines cambia los valores por los correctos, pero recuerda que los digitales tienen que ser PWM.

Configuración

Dentro de la función setup() configuramos los 3 pines digitales del led RGB como salida (OUTPUT):

pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);

Los analógicos no hay que configurarlos porque solo tienen modo entrada y es el comportamiento por defecto.

Función loop

Dentro de la función loop primero leemos el valor de los potenciómetros y lo almacenamos en la variable correspondiente:

int red = analogRead(POT_R)/4;
int green = analogRead(POT_G)/4;
int blue = analogRead(POT_B)/4;

Usamos analogRead() puesto que están conectados en pines analógicos. El valor leído estará comprendido entre 0 y 1023, por eso hay que dividirlo entre 4, para convertirlo en un valor PWM válido (entre 0 y 255) que posteriormente enviaremos al led. La idea es obtener un valor RGB válido combinando los resultados guardados en las variables red, green y blue (ej: red=255, green=123, blue=0).

Lo siguiente es iluminar el led:

analogWrite(R, red);
analogWrite(G, green);
analogWrite(B, blue);

Como tenemos el valor RGB en las variables red, green y blue, solo es necesario enviarlas a los pines digitales en los que están conectados los ánodos del led. Usamos la función analogWrite() para poder utilizar PWM.

Si tienes dudas de cómo funciona el led y cómo se obtienen los colores echa un vistazo a este tutorial: Led RGB.

Recuerda que la función loop se comporta como un bucle infinito, por lo tanto estaremos constantemente leyendo los valores de los potenciómetros y actualizando el color del led RGB en tiempo real.

Pues ha llegado el momento de probarlo. Carga el sketch en tu Arduino y empieza a girar los potenciómetros para ver qué ocurre.


Te avisaré cuando publique nuevo contenido en paraarduino.com y en mi canal de YouTube (@ParaArduino).

No hemos podido validar tu suscripción.
¡Se ha realizado tu suscripción!

Newsletter

Suscríbete para que te avise cuando publique nuevo contenido.

Usamos Brevo como plataforma de marketing. Al hacer clic a continuación para enviar este formulario, consiente que la información proporcionada sea transferida a Brevo para su procesamiento de acuerdo con sus términos de uso