Práctica 2 Controlar un led RGB con 3 potenciometros
Objetivo:
Encender un led RGB y regular los colores con 3 potenciometros
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. Empecemos pues:
Materiales:
Protoboard. -
x3 potenciómetros de 10K
LED-RGB -
x3 resistencias de 220Ω-
Placa Arduino UNO
Una vez reunidos nuestros componentes deberemos crear el siguiente montaje en nuestra protoboard:
Fig. 2 montaje del circuito.
Para iniciar vamos a conectar el LED-RGB a la protoboard. La primera patilla empezando por la izquierda es la equivalente al color rojo (si tienes 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).
Selecciona la tarjeta Arduino que se esta utilizando
– Se selecciona el Puerto Serial. Bajo que puerto USB se va a conectar el Arduino con el computador.
– Se empieza a realizar el código:
/*
---------------------------------------------
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);
Tan sólo una última aclaración para que nadie se sienta perdido. Los colores están comprendidos entre los valores 0 – 255 siendo 0 apagado y 255 el color a la máxima intensidad. Los valores 0 – 1032 hacen referencia a lo que Arduino lee de los potenciómetros. Esta señal siempre está comprendida entre 0 -1032 independientemente de la resistencia del potenciómetro.
Una vez hecho esto, y si las leyes de Murphy no nos molestan, el resultado debería ser el siguiente:
– Se selecciona el Puerto Serial. Bajo que puerto USB se va a conectar el Arduino con el computador.
– Se empieza a realizar el código:
/*
---------------------------------------------
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);
Tan sólo una última aclaración para que nadie se sienta perdido. Los colores están comprendidos entre los valores 0 – 255 siendo 0 apagado y 255 el color a la máxima intensidad. Los valores 0 – 1032 hacen referencia a lo que Arduino lee de los potenciómetros. Esta señal siempre está comprendida entre 0 -1032 independientemente de la resistencia del potenciómetro.
Una vez hecho esto, y si las leyes de Murphy no nos molestan, el resultado debería ser el siguiente:
Comentarios
Publicar un comentario