Introduction: Trabajo Final Control De Led RGB Y Servomotor

Para este trabajo se realizó una compilación de varios componentes para ser usados a la vez bajo un mismo código de programación, donde se utilizará dos sensores (la fotoresistencia y el sensor de temperatura) y dos actuadores (el led RGB y el servomotor).

En este caso se programó para que la intensidad de luz del led RGB se gradúe de acuerdo a la intensidad de luz que recibe la fotoresistencia, es decir, a poca luz solar que recibe la fotoresistencia, la intensidad de luz del led RGB será mayor. También se debe programar la posición del servomotor para que se gradúe de acuerdo a la temperatura que recibe el sensor de temperatura. Ambos sistemas de control se deben realizar a la vez.

Supplies

Para realizar este trabajo se requiere de los siguientes componentes:

1 placa Arduino UNO

1 cable USB

1 protoboard (placa de pruebas)

1 fotoresistencia

1 sensor de temperatura LM35

1 led RGB

1 servomotor

2 resistencias

1 juego de cables dupont

Step 1: Identificar Los Sistemas De Control

Antes de preparar el circuito, primero se debe identificar correctamente los sistemas de control. En este caso van a ser 2: uno está conformado por la fotoresistencia y el led RGB, y el otro está conformado por el sensor de temperatura LM35 y el servomotor. Si bien ambos sistemas estarán en un mismo código, deben estar señalados por separado en las funciones designadas para no generar errores en el uso de las variables.

Step 2: Preparar El Circuito

Una vez identificado los sistemas de control, se debe preparar el circuito. Para ello se debe colocar correctamente los pines de los sensores y actuadores en el protoboard, identificar los pines positivos, negativos y los de lectura para no dañar los componentes.

Luego se debe colocar los cables correspondientes de acuerdo a la posición de los componentes. Recordar que los dos actuadores deben estar conectados a pines analógicos, es decir, deben estar conectados a pines PWM. Los sensores deben estar conectados en las entradas analógicas. También todos los componentes deben estar conectados a una sola tierra.

Step 3: Realizar La Programación

Una vez finalizado las conexiones, se debe proceder con la programación. Para este caso se debe identificar los pines de entrada y salida, así como definir las variables que se usarán para la lectura de los sensores y la conversión de unidades para los actuadores. Es importante incluir la librería de los servomotores ya que se va a trabajar con ellos.

También se utilizaron los condicionales "if" y "else" para programar los actuadores, así como la lectura del monitor serial para leer los valores de intensidad de luz y temperatura. A continuación se presenta el código donde están señalados los comentarios para explicar la función de cada línea de programación.

Código:

#include <Servo.h>

Servo myservo; //incluimos la librería de los servomotores

int pos = 0; //definimos la variable para la posición del servomotor

#define pinRojo 11

#define pinAzul 10

#define pinVerde 9

#define pinLuz A0

#define pinTemp A1

int valLuz; //definimos la variable para la intensidad de luz

int valor; //definimos la variable para controlar el led RGB

int valTemp; //definimos la variable para la temperatura

float temp; //definimos la variable para controlar el servomotor


void setup()

{

 Serial.begin(9600); //inicializamos el monitor serial

 myservo.attach(6); //designamos el pin del servomotor

 pinMode(pinRojo, OUTPUT); //designamos el pin rojo del led RGB

 pinMode(pinAzul, OUTPUT); //designamos el pin azul del led RGB

 pinMode(pinVerde, OUTPUT); //designamos el pin verde del led RGB

 pinMode(pinLuz, INPUT); //designamos el pin de lectura de la fotoresistencia

 pinMode(pinTemp, INPUT); //designamos el pin de lectura de la temperatura

}


void loop()

{

 valLuz = analogRead(pinLuz); //realizamos la lectura de la fotoresistencia

 Serial.print("El valor de la intensidad de luz solar es: ");

 Serial.println(valLuz); //imprimimos el valor de la intensidad de la luz solar en el monitor serial

 valTemp = analogRead(pinTemp); //realizamos la lectura de la temperatura

 temp = (5.0 * valTemp * 100.0) / 1024.0 - 50; //este valor lo convertimos a grados Celsius

 Serial.print("La temperatura es: ");

 Serial.print(temp); //imprimimos el valor de la temperatura en el monitor serial

 Serial.println(" grados Celsius");

 if(valLuz<=6){ //condición cuando se presente muy poca luz solar

  valor = 255; //se prende por completo el led RGB

 } else if(valLuz>=679){ //condición cuando se presenta mucha luz solar

  valor = 0; //se apaga por completo el led RGB

 } else { //caso cuando hay moderada intensidad de luz solar

  valor = (679-valLuz)/3; //se modera la intensidad del led RGB

 }

 analogWrite(pinRojo,valor); //señala la intensidad de luz del pin rojo del led RGB

 analogWrite(pinAzul,valor); //señala la intensidad de luz del pin azul del led RGB

 analogWrite(pinVerde,valor); //señala la intensidad de luz del pin verde del led RGB

 if(temp<0){ //condición cuando la temperatura es muy baja

  pos = 0; //posición del servomotor a 0 grados, persianas cerradas

 } else if(temp>30){ //condición cuando la temperatura es muy alta

  pos = 180; //posición del servomotor a 180 grados, persianas abiertas

 } else { //caso cuando la temperatura se encuentra entre 0°C y 30°C

  pos=temp*6; //se modera la posición del servomotor

 }

 myservo.write(pos); //el servomotor empieza a girar de acuerdo a la posición señalada

 delay(300); //espera de 300 milisegundos

}

Step 4: Simulación Y Ajustes Finales

Una vez terminado la programación se debe realizar la simulación para verificar que todo esté en orden y no se presenten errores. En el caso que se presenten errores se debe realizar los ajustes necesarios para arreglarlos, ya que pueden presentarse tanto en la programación como en la conexiones del protoboard.