//vision monitor serie
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <math.h>
#include "DHT.h"
#define DHTPIN 12 // Pin donde está conectado el sensor
#define DHTTYPE DHT22 // Descomentar si se usa el DHT 11
DHT dht(DHTPIN, DHTTYPE);
const byte pinBuzzer=5; //pùerto bocina
byte salida=175;
float t=0;
float h=0;
float valor = 3600000;
int mas = 0;
int aceptar = 0;
float vol=0;
float x=0;
int alarm=0;
int b=0;
int temp=70;
int pa4=0;
int pa5=0;
LiquidCrystal_I2C lcd (0x27, 20, 4); // DIR, E, RW, RS, D4, D5, D6, D7
void setup() {
lcd.init();
pinMode(2, INPUT);//botones
pinMode(3, INPUT);//botones
pinMode(4, INPUT);//botones
pinMode(8, OUTPUT); //rele
Serial.begin(9600);
}
void loop()
{
//DHT11
delay(500);
t = dht.readTemperature(); //Leemos la temperatura en grados Celsius
h = dht.readHumidity();
digitalWrite(8, LOW);
mas = digitalRead(2); //cambio de numeros
aceptar = digitalRead(3); //comenzar conteo
alarm = digitalRead(4); //temperatura
//Chequeo
delay(1000);
Serial.println("Chequeo...");
Serial.println("El chequeo para que sea efectivo va a funcionar antes de presionar un boton, el pin 8 es el relay y pin 5 buzzer");
Serial.println(" ");
if(t>0&h>0)
{Serial.println("Sensor DHT11 OK!!");
Serial.println(" ");}
else
{Serial.println("Error Sensor DHT11!! pin12");
Serial.println(" ");}
if(mas>0)
{ Serial.println("Error!! en boton mas ");}
if(aceptar>0)
{ Serial.println("Error!! en boton aceptar ");}
if(alarm>0)
{ Serial.println("Error!! en boton alarm ");}
if(mas==0&aceptar==0&alarm==0)
{ Serial.println("Botones 0k!!!");}
Serial.println(" ");
pa4 = analogRead(A4);
pa5 = analogRead(A5);
if(pa4<1023)
{ Serial.println("Error!! en pantalla pin A4");}
if(pa5<1023)
{ Serial.println("Error!! en pantalla pin A5");}
if(pa5==1023&pa4==1023)
{ Serial.println("LCD 0k!!!");}
Serial.println(" ");
Serial.println(" ");
//Fin del chequeo DHT11
//Muestra de temperatura
if(alarm==1)
{
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Temperatura");
lcd.setCursor(5, 1);
lcd.print(t);
lcd.setCursor(11, 1);
lcd.print("C");
delay(2000);
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(" Humedad");
lcd.setCursor(5, 1);
lcd.print(h);
lcd.setCursor(11, 1);
lcd.print("%");
delay(2000);
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Alarm. T & H");
lcd.setCursor(6, 1);
lcd.print(temp);
delay(2000);lcd.clear();
}
if (mas == 1)
{valor = valor + 1800000; delay(100);}
//temporalizador
//1
if (aceptar == 1 && valor == 3600000)
{Ciclo();}
//1.5
if (aceptar == 1 && valor == 5400000)
{Ciclo();}
//2
if (aceptar == 1 && valor == 7200000)
{Ciclo();}
//2.5
if (aceptar == 1 && valor == 9000000)
{Ciclo();}
//3
if (aceptar == 1 && valor == 10800000)
{Ciclo();}
//3.5
if (aceptar == 1 && valor == 12600000)
{Ciclo();}
//4
if (aceptar == 1 && valor == 14400000)
{Ciclo();}
//4.5
if (aceptar == 1 && valor == 16200000)
{Ciclo();}
//5
if (aceptar == 1 && valor == 18000000)
{Ciclo();}
//5.5
if (aceptar == 1 && valor == 19800000)
{Ciclo();}
//6
if (aceptar == 1 && valor == 21600000)
{Ciclo();}
//6.5
if (aceptar == 1 && valor == 23400000)
{Ciclo();}
//7
if (aceptar == 1 && valor == 25200000)
{Ciclo();}
else if (valor > 25200000) //volver a comenzar el conteo
{valor = 3600000; }
if(valor==0)
{ lcd.setCursor(0, 0);
lcd.print(" Carga Completa");
}else if(t>temp){
lcd.setCursor(0, 0);
lcd.print("Muy Caliente");
lcd.setCursor(0, 1);
lcd.print(t);
lcd.setCursor(3, 1);
lcd.print("C");
analogWrite(pinBuzzer,salida);
digitalWrite(8, LOW);
valor=1;
}else{
vol=valor/3600000*7/2.5;
lcd.setCursor(3, 0);
lcd.print(valor/3600000);
lcd.setCursor(8, 0);
lcd.print("Horas");
lcd.setCursor(3, 1);
lcd.print(vol);
lcd.setCursor(9, 1);
lcd.print("Vol");
}
}
void Ciclo()
{
digitalWrite(8, HIGH);
for(float i=valor; i>=0; i=i-1000)
{
float t = dht.readTemperature();
if(t>temp)//testeo de temperatura
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Muy Caliente");
lcd.setCursor(0, 1);
lcd.print(t);
lcd.setCursor(3, 1);
lcd.print("C");
analogWrite(pinBuzzer,salida);
digitalWrite(8, LOW);
delay(1000000000);
}else if(h>temp)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Agua");
lcd.setCursor(5, 1);
lcd.print(h);
lcd.setCursor(10, 1);
lcd.print("%");
analogWrite(pinBuzzer,salida);
digitalWrite(8, LOW);
delay(1000000000);
}
else{
lcd.setCursor(2, 0);
lcd.print(i/60000);
lcd.setCursor(8, 0);
lcd.print("minutos");
delay(1000);
}}valor=0;
}