Introduction: Trabajo Final

Explicare como armar un sistema Arduino que prende una luz RGB con un LDR e indica el nivel de temperatura con un sensor de temperatura y un servomotor.

Supplies

Usaremos:

  • Una luz RGB
  • Un servomotor
  • Un sensor de temperatura
  • 2 resistencias
  • 12 cables a más.

Step 1: Conectar Los Cables

Iremos conectando los cables como en la imagen mostrada para el uso que le vamos a dar.

Step 2: Colocar Las Resistencias

Ahora pondremos las resistencias para que nos ayuden con la conexión a tierra de la luz RGB y el LDR.

Step 3: LDR Y Sensor

Ahora colocamos y conectamos, el LDR y el sensor de temperatura.

Step 4: RGB Y Servomotor

Terminamos colocando y conectando el servomotor acompañado de la luz RGB, el servomotor lo vamos a programar para que funcione entorno al sensor de temperatura y la luz RGB dependiendo del nivel del luz que reciba el LDR.

Step 5: CODIGO

Dependiendo de como hayan realizado la conexión de los cables y otros factores pueden moldear el codigo al gusto pero yo utilice el siguiente:

int LDR_pin = 0;

int LDR_var = 0;

int pos = 0;

float tempC;

float direc;

#define ledRojo 11

#define ledAzul 10

#define ledVerde 9

#include <Servo.h>

 Servo servo_6;


void setup(){

 pinMode(A1,INPUT);

 pinMode(A0,INPUT);

 pinMode(ledRojo, OUTPUT);

 pinMode(ledAzul, OUTPUT);

 pinMode(ledVerde, OUTPUT);

 Serial.begin(9600);

 servo_6.attach(6, 500, 2500);

}

void loop(){

 tempC = analogRead(A1); 

 tempC = (5.0 * tempC * 100.0) / 1024.0 - 50; //Formula para calcular grados Celcius

 Serial.print("Temperatura:");

 Serial.println(tempC);

direc = tempC + 14.97; //Direccion en grados del servomotor


 LDR_var = analogRead(A0);

  Serial.print("LDR =");

  Serial.println(LDR_var); 

delay(1000);

 if(LDR_var>=0 && LDR_var<=500){

  digitalWrite(ledRojo,HIGH);

  digitalWrite(ledAzul,HIGH);

  digitalWrite(ledVerde,HIGH);

  delay(1000);

 }else{

  digitalWrite(ledRojo,LOW);

  digitalWrite(ledAzul,LOW);

  digitalWrite(ledVerde,LOW);

  delay(1000);

 }

servo_6.write(direc);

  delay(15);

}