WhatsApp / Celular
+3116183653
0Item(s)
0 Items View Cart

No hay artículos en su carrito de compras.

Product was successfully added to your shopping cart.

Tutorial Arduino - Controlar un Led Rgb Utilizando Potenciómetros

TUTORIAL ARDUINO - CONTROLAR UN LED RGB UTILIZANDO POTENCIÓMETROS

Tenemos un proyecto muy fácil de hacer y con resultados muy coloridos.

Lo que pretendemos hacer con el siguiente montaje es no sólo encender un LED-RGB mediante Arduino (con la consecuente obligación de acudir al código cada vez que se desee un nuevo color) sino de cambiar también el color del LED utilizando los diferentes valores que nos da cada potenciómetro. Así pues, y una vez montado, sólo tendremos que girar en un sentido o en otro los distintos potenciómetros para obtener las diferentes mezclas de colores que nos ofrecen este tipo de LEDs.

Lo que vamos a necesitar:

  • -1 Protoboard.
  • -3 Potenciómetros 10K
  • -1 LED-RGB -
  • -3 resistencias (en mi caso de 220Ω).
  • -1 Placa Arduino (en mi caso UNO).

Una vez reunidos nuestros componentes deberemos crear el siguiente montaje en nuestra protoboard: 

rgb

Como puedes comprobar más abajo los potenciómetros que yo utilicé no son exactamente los mismos que en el esquema, pero esto no afecta en absoluto al funcionamiento. Tan sólo debes recordar que la patilla central de nuestros potenciómetros deberá conectarse en una entrada analógica (en este caso hemos elegido la A0, A1 y A2) así como conectar tanto a la tensión de 5V como a GND las patillas de los extremos, para que al girar el potenciómetro nos varíe la resistencia interna y por tanto se modifique el valor del mismo.

Una vez hecho esto procederemos a conectar nuestro LED-RGB a la protoboard (recordad que el cátodo corresponde a la parte más ancha de metal que hay dentro del capuchón transparente, esto nos servirá de guía a la hora de orientarnos en el montaje y evitar errores a la hora de seleccionar los colores). La primera patilla empezando por la izquierda es la equivalente al color rojo (si tenéis el cátodo también en el lado izquierdo claro), la segunda es la que usaremos para alimentar el LED conectándolo a los 5V, la tercera es la equivalente al color verde y la cuarta y última la que nos dará el color azul. Es muy importante no olvidar las resistencias ya que estas son las encargadas de crear la diferencia de potencial necesaria para que los diferentes colores se iluminen. Cada una de las patillas de color estarán conectadas a las salidas digitales 9, 10 y 11 (Rojo, Verde y Azul respectivamente). Si os habéis perdido a la hora de identificar los colores, os he indicado cada color y su respectiva conexión a la placa Arduino haciendo coincidir los colores de los cables con el color de cada patilla.

Ahora, para conseguir que todo funcione como debe, es importante cargarle a la placa el código correspondiente:

/*
 --------------------------------------------- 
  LED RGB + Potenciómetro
 ---------------------------------------------

  Programa que varia el color del LED según
  el valor obtenido por unos potenciómetros.

*/

//--------------------------------------------------
//Declara puertos de entradas y salidas y variables
//--------------------------------------------------
int ledRojo = 9; //Declara Pin LED Rojo
int ledVerde=10; //Declara Pin LED Verde
int ledAzul=11;  //Declara Pin LED Azul

int pinPot0 = A0;  //Declara Pin Potenciometro Rojo
int pinPot1 = A1;  //Declara Pin Potenciometro Verde
int pinPot2 = A2;  //Declara Pin Potenciometro Azul

int valorsensor0 = 0;  //Valores analogicos de la salida del potenciometro
int valorsensor1 = 0;  //   ||        ||            ||            ||
int valorsensor2 = 0;  //   ||        ||            ||            ||

float divisionR; 
float divisionV;
float divisionA;

//------------------------------------
//Funcion principal
//------------------------------------
void setup() // Se ejecuta cada vez que el Arduino se inicia
{ 
  pinMode(ledRojo,OUTPUT);  //El LED Rojo como una salida
  pinMode(ledVerde,OUTPUT); //El LED Verde como una salida
  pinMode(ledAzul,OUTPUT);  //El LED Azul como una salida
  Serial.begin(9600);

}

//------------------------------------
//Funcion ciclicla
//------------------------------------
void loop() {

   // Llamada a la función Color que recibe
   // 1er posicion: Intensidad Rojo
   // 2da posición: Intensidad Verde
   // 3ra posición: Intensidad Azul

   float Constante = (float) 255 / 1023;  //Divide el máximo valor de color entre el máximo valor del potenciómetro

   valorsensor0 = analogRead(pinPot0);
   valorsensor1 = analogRead(pinPot1);
   valorsensor2 = analogRead(pinPot2);

   divisionR = Constante * valorsensor0;    
   divisionV = Constante * valorsensor1;
   divisionA = Constante * valorsensor2;

   color(divisionR,divisionV,divisionA);     // Carga un valor para (ROJO,VERDE,AZUL)
                                             //segun el valor de tres potenciómetros.

}

//------------------------------------
//Funcion color
//------------------------------------

void color(int rojo, int verde, int azul){

    //ROJO. Le resta al total (255) el valor obtenido de los potenciometros
    analogWrite(ledRojo, 255-rojo);

    //VERDE. Le resta al total (255) el valor obtenido de los potenciometros
    analogWrite(ledVerde, 255-verde);

    //AZUL. Le resta al total (255) el valor obtenido de los potenciometros
    analogWrite(ledAzul, 255-azul);
}