Buen día, soy completamente nueva en el mundo de arduino y este foro me ha ayudado mucho a aprender un poco, no me habia animado a escribir porque la verdad, la mayoría de las dudas que tenia sobre mi proyecto me las resolvieron aquí mismo.
Estoy a punto de terminar un proyecto de la escuela y consiste en un control automatico de temperatura con alarma, lo que deseo lograr con esto es que la temperatura dentro de un sitio no sea mayor a 25°C y menor a 16°C. En caso de que estas condiciones no se cumplan, monitorear la temperatura durante una hora (1 lectura cada 10 minutos) y sacar un promedio, en caso de que el promedio sea diferente a los valores ideales mandar una señal desde un LED infrarrojo con el codigo para subir o bajar la temperatura. Posteriormente a esto, sensar de nuevo la temperatura durante 1 hora y si las condiciones no cambian enviar una alarma.
Los materiales que utilicé para el proyecto son:
- Arduino UNO
- 2 Sensores de temperatura LM35
- LCD 2x16
- Potenciometro
- LED infrarrojo emisor
- Módulo de relevadores de cuatro canales.
Debo mencionar que decodifiqué varios mandos a distancia, de aire acondicionado asi como de televisiones, con el receptor infrarrojo integrado AX1838HS y el ejemplo que trae la libreria IRremote, me funcionó bien, de hecho hice practicas de envío de señales con una TV pero al momento de querer intentarlo con el aire acondicionado y ya todo junto no funcionó. Dejo el código que tengo para que me regañen o hagan lo necesario para poder entender por qué no funcionó. Repito que soy nueva en estos asuntos.
[/list]
// Esta es la libreria IRremote al momento de incluirla se agregan las 4, la descargué de https://github.com/z3t0/Arduino-IRremote
#include <boarddefs.h>
#include <IRremote.h>
#include <IRremoteInt.h>
#include <ir_Lego_PF_BitStreamEncoder.h>
#include <LiquidCrystal.h>
int promedio= 0;
int lectura1= 0;
int lectura2= 0;
int lectura3= 0;
int lectura4= 0;
int lectura5= 0;
int lectura6= 0;
int analog = A0;
int analog1 = A1;
LiquidCrystal lcd(12, 11, 5, 4, 6, 2);
int Temp = 0;
int Temp2 = 0;
#define rele 10
int tiempo= 1000;
IRsend irsend;
//---------------------------------------------------------------------------------------------
void setup() {
Serial.begin(9600);
lcd.begin(16,2);
Serial.begin(9600);
pinMode(rele, OUTPUT);
digitalWrite(rele,HIGH);
}
//---------------------------------------------------------------------------------------------
void loop() {
Temp = analogRead(analog);
Temp = (500.0*Temp)/1023.0;
Temp2 = analogRead(analog1);
Temp2 = (500.0*Temp2)/1023.0;
Serial.print("Interior: ");
Serial.print(Temp);
Serial.print("°C");
Serial.print("\t");
Serial.print("Exterior: ");
Serial.print(Temp2);
Serial.print("°C");
Serial.print("\n");
lcd.setCursor(0,0);
lcd.print("Interior: ");
lcd.setCursor(10,0);
lcd.print(Temp);
lcd.setCursor(12,0);
lcd.print(" C");
lcd.setCursor(0,2);
lcd.print("Exterior: ");
lcd.setCursor(10,1);
lcd.print(Temp2);
lcd.setCursor(13,1);
lcd.print("C");
//--------------------------------------------------------------------------------------------
if(Temp>25);
{
delay(tiempo);
Temp = analogRead(analog);
Temp = (500.0*Temp)/1023.0;
lectura1=Temp;
delay(tiempo);
Temp = analogRead(analog);
Temp = (500.0*Temp)/1023.0;
lectura2=Temp;
delay(tiempo);
Temp = analogRead(analog);
Temp = (500.0*Temp)/1023.0;
lectura3=Temp;
delay(tiempo);
Temp = analogRead(analog);
Temp = (500.0*Temp)/1023.0;
lectura4=Temp;
delay(tiempo);
Temp = analogRead(analog);
Temp = (500.0*Temp)/1023.0;
lectura5=Temp;
delay(tiempo);
Temp = analogRead(analog);
Temp = (500.0*Temp)/1023.0;
lectura6=Temp;
promedio=(lectura1+lectura2+lectura3+lectura4+lectura5+lectura6)/6;
if(promedio>21)
{
irsend.sendNEC(0x8C60003A, 32); //Codigo de encendido a 23°C
Serial.println("Enviando código de encendido");
Serial.print("Promedio: ");
Serial.print(promedio);
Serial.print("\n");
}
//------------------------------------------------------------------------------------------------
else if(promedio<16)
{
irsend.sendNEC(0x8080003A, 32); //Codigo de apagado a 16°C
Serial.println("Enviando código de apagado");
Serial.println("Promedio= ");
Serial.print(promedio);
}
}//Se enciende la alarma
Temp = analogRead(analog);
Temp = (500.0*Temp)/1023.0;
lectura1=Temp;
delay(tiempo);
Temp = analogRead(analog);
Temp = (500.0*Temp)/1023.0;
lectura2=Temp;
delay(tiempo);
Temp = analogRead(analog);
Temp = (500.0*Temp)/1023.0;
lectura3=Temp;
delay(tiempo);
Temp = analogRead(analog);
Temp = (500.0*Temp)/1023.0;
lectura4=Temp;
delay(tiempo);
Temp = analogRead(analog);
Temp = (500.0*Temp)/1023.0;
lectura5=Temp;
delay(tiempo);
Temp = analogRead(analog);
Temp = (500.0*Temp)/1023.0;
lectura6=Temp;
promedio=(lectura1+lectura2+lectura3+lectura4+lectura5+lectura6)/6;
if(promedio>25){
digitalWrite(rele, LOW);}
else {digitalWrite(rele, HIGH);}
}