Introduction: Final De Arduino1

En este proyecto, se ha creado un sistema de control y monitoreo domótico aprovechando los conocimientos adquiridos durante el curso de Arduino 1. El propósito principal de este trabajo es demostrar la consolidación de los conocimientos generados a partir de la información impartida durante este curso.

Supplies

1 Servo motor

1 LM35

1 LDR

1 LED RGB

3 Resistencias

14 Cables

1 Placa de pruebas pequeña

1 Arduino UNO

Step 1:

Al tratarse de un trabajo con dos partes, se dividió en dos etapas para realizar el ensamblaje de las piezas correspondientes a la primera consigna.

"Se cuenta con un sensor LDR para monitorear la Luz solar, 

esta información de intensidad de luz servirá para el control 

de la intensidad de luz de el led RGB. Es decir que, a menor 

presencia de luz solar mayor será la intensidad de luz del 

led RGB."


Para esto se usó el siguiente código:

#define LDR A0

#define ledRojo 10

#define ledAzul 9

#define ledVerde 11


int valorLDR=0;


void setup(){

  pinMode(LDR, INPUT);

  pinMode(ledRojo,OUTPUT);

pinMode(ledAzul,OUTPUT);

pinMode(ledVerde,OUTPUT);

  Serial.begin(9600);

}


void loop() {

 if (valorLDR >= 0 && valorLDR < 300){ //for es para conteo

  digitalWrite(ledRojo, HIGH);

  digitalWrite(ledVerde, HIGH);

  digitalWrite(ledAzul, HIGH);}

 //dice que es analog write

  if (valorLDR >300 && valorLDR < 600){

  digitalWrite(ledRojo, HIGH);

  digitalWrite(ledVerde, HIGH);

  digitalWrite(ledAzul, LOW);}

 if (valorLDR > 600){

  digitalWrite(ledRojo, LOW);

  digitalWrite(ledVerde, LOW);

  digitalWrite(ledAzul, LOW);}


 valorLDR = analogRead(LDR);

 Serial.print("valor LDR: ");

 Serial.println(valorLDR);

}

Step 2:

Posteriormente se realizó un procedimiento similar con la segunda parte del trabajo:


Se cuenta con un sensor LDR para monitorear la Luz solar, 

esta información de intensidad de luz servirá para el control 

de la intensidad de luz de el led RGB. Es decir que, a menor 

presencia de luz solar mayor será la intensidad de luz del 

led RGB.

Para esto se usó el siguiente código:

#include <Servo.h>

Servo myservo;

int pos=0;

int valorTMP=0;

float Temperatura;

#define TMP A1

void setup () 

{

 myservo.attach (5);

 Serial.begin(9600);

}

void loop () {

 Temperatura = analogRead(TMP);

 float Temp=Temperatura*500;

 float TemperaturaC = Temp/1024;

  if (TemperaturaC <= 40)

  {

   pos=0;

  }

  else if (TemperaturaC > 80)

  {

   pos=180;

  }

   else

  {

   pos=90;

  }

 delay(1000);

  valorTMP = analogRead(TMP);

  Serial.print("valor TMP: ");

  Serial.println(valorTMP);

  myservo.write(pos);

  Serial.print("Posicion Servo: ");

  Serial.println(pos);

}

Step 3:

Esto dio como resultado el ensamblado del trabajo final, el cual tiene el siguiente código:

#include <Servo.h>

Servo myservo;

int pos=0;

int valorTMP=0;

float Temperatura;


#define TMP A1

#define LDR A0

#define ledRojo 10

#define ledAzul 9

#define ledVerde 11

int valorLDR=0;


void setup(){

  pinMode(LDR, INPUT);

  pinMode(ledRojo,OUTPUT);

pinMode(ledAzul,OUTPUT);

pinMode(ledVerde,OUTPUT);

  myservo.attach (5);

  Serial.begin(9600);

}


void loop() {

  Temperatura = analogRead(TMP);

  float Temp=Temperatura*500;

  float TemperaturaC = Temp/1024;

  if (TemperaturaC <= 40)

  {

   pos=0; 

  }

  else if (TemperaturaC > 80)

  {

   pos=180;

  }

   else

  {

   pos=90;

  }

 delay(1000);

if (valorLDR >= 0 && valorLDR < 300){ 

  digitalWrite(ledRojo, HIGH);

  digitalWrite(ledVerde, HIGH);

  digitalWrite(ledAzul, HIGH);}

  if (valorLDR >300 && valorLDR < 600){

  digitalWrite(ledRojo, HIGH);

  digitalWrite(ledVerde, HIGH);

  digitalWrite(ledAzul, LOW);}

 if (valorLDR > 600){

  digitalWrite(ledRojo, LOW);

  digitalWrite(ledVerde, LOW);

  digitalWrite(ledAzul, LOW);}


   valorTMP = analogRead(TMP);

  Serial.print("valor TMP: ");

  Serial.println(valorTMP);

  myservo.write(pos);

  Serial.print("Posicion Servo: ");

  Serial.println(pos);

  valorLDR = analogRead(LDR);

  Serial.print("valor LDR: ");

  Serial.println(valorLDR);

}

Step 4: Conclusiones

Uno de los aspectos que podría haber generado mayor dificultad fue el cálculo de la temperatura. Para abordar este asunto, se dividió en dos partes esta operación, dicho proceso se puede contemplar en la codificación presentada. En general, el ensamblaje y la codificación se llevaron a cabo de manera rápida, ya que los recursos proporcionados en clase fueron adecuados para nuestras necesidades.