Está en la página 1de 5

#include <Wire.

h>
#include "RTClib.h"
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <DHT.h>

const int pinDatosDQ = 2;


const int sensorDHT=3;

LiquidCrystal_I2C lcd(0x3F,16,2);
RTC_DS1307 RTC;
OneWire oneWireObjeto(pinDatosDQ);
DallasTemperature sensorDS18B20(&oneWireObjeto);
DHT dht (sensorDHT,DHT11);
int pinEnt = 4;
int pinA = 6;
int pinB = 5;
int pinBomba = 7;
int Pos = 1;
int aux=1;
int tON=0;
int tOFF=0;
int temp, humedad;
int m;
int s;
int mp;
int sp;
int an;
unsigned long time;
unsigned long t;
unsigned long tEnt;
unsigned long tMos;
unsigned long ptMos= 0;
bool C = true;
bool D = true;
bool E = false;
bool Ent = false;
bool mos = false;
bool mos1 = false;
bool on = false;
bool off = false;
bool ok = false;
bool BOM = false;
bool ini = true;

void setup () {
Wire.begin(); // Inicia el puerto I2C
RTC.begin(); // Inicia la comunicaci�n con el RTC
sensorDS18B20.begin();
dht.begin();
//RTC.adjust(DateTime(__DATE__, __TIME__)); // Establece la fecha y hora
(Comentar una vez establecida la hora)
//RTC.adjust(DateTime(2014, 1, 21, 3, 58, 0));
//el anterior se usa solo en la configuracion inicial
Serial.begin(9600); // Establece la velocidad de datos del puerto serie
lcd.init();
lcd.backlight();
lcd.clear();
pinMode(pinA,INPUT);
pinMode(pinB,INPUT);
pinMode(pinEnt,INPUT);
pinMode(pinBomba,OUTPUT);
digitalWrite(pinBomba,BOM);
lcd.setCursor(6,0);
lcd.print("UCSM");
lcd.setCursor(1,1);
lcd.print("TURBO-MAQUINAS");
delay(4000);
lcd.clear();

}
void loop(){
//Codigo del RTC
DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC
time = millis();
if(ini==true){
sensorDS18B20.requestTemperatures();
humedad= dht.readHumidity();
temp= dht.readTemperature();
lcd.setCursor(0,0);
lcd.print("Datos Iniciales");
lcd.setCursor(0,1);
lcd.print("T1:");
int t1=sensorDS18B20.getTempCByIndex(0);
lcd.print(t1);
lcd.print(" T2:");
lcd.print(temp);
lcd.print(" H:");
lcd.print(humedad);
delay(8000);
ini=false;
lcd.clear();

}
digitalWrite(pinBomba,BOM);
if (aux==3){
if(tMos-ptMos>10000){
ptMos=tMos;
if (mos1 == true){
mos1=false;
mos=true;
lcd.clear();
}
else{
mos1=true;
mos=false;
lcd.clear();
}
}
s=now.second();
m=now.minute();

Serial.print("t:");Serial.print(m);Serial.print(":");Serial.print(s);Serial.print("
tp:");Serial.print(mp);Serial.print(":");Serial.print(sp);Serial.print("
tON:");Serial.print(tON);Serial.print(" tOFF:");Serial.print(tOFF);Serial.print("
B:");Serial.println(BOM);
if (BOM == true){
if (mp+tON>=60){
mp=mp-60;
}
if(sp==s && mp+tON==m){
BOM=false;
sp=now.second();
mp=now.minute();
}
}
if (BOM == false){
if (mp+tOFF>=60){
mp=mp-60;
}
if(sp==s && mp+tOFF==m){
BOM=true;
sp=now.second();
mp=now.minute();
}
}
}
if(mos==true){
lcd.setCursor(0,0);
lcd.print("D:");
lcd.print(now.day(), DEC);
lcd.print("/");
lcd.print(now.month(), DEC);
lcd.print("/");
an=now.year(),DEC;
lcd.print(an-2000);
lcd.setCursor(12,0);
lcd.print("BOMB");
lcd.setCursor(0,1);
lcd.print("T:");
lcd.print(now.hour(), DEC);
lcd.print(":");
lcd.print(now.minute(), DEC);
lcd.print(":");
lcd.print(now.second(), DEC);
lcd.print(" ");
lcd.setCursor(13,1);
if (BOM==true){lcd.print("ON");}
else{lcd.print("OF");}
tMos=time;
}
if(aux==1){
lcd.setCursor(0,0);
lcd.print(" Tiempo en ON ? ");
}
if(aux==2){
lcd.setCursor(0,0);
lcd.print(" Tiempo en OFF? ");
}
if(aux<3){
lcd.setCursor(5,1);
lcd.print(Pos);
lcd.print(" min ");
// Codigo del Encoder
if (digitalRead(pinA)==0){
t = time;
if(C == true){
Pos ++;
if(Pos>60){Pos--;}
C = false;
D = false;
}
}
if (digitalRead(pinB)==0){
t = time;
if(D == true){
Pos --;
if(Pos<1){Pos++;}
C = false;
D = false;
}
}
if (time-t>7){
C = true;
D = true;
}
//Enter
if(E == false){
if(digitalRead(pinEnt) == LOW){
E = true;
}
}
if(E == true){
if(digitalRead(pinEnt) == HIGH){
lcd.setCursor(0,1);
lcd.print(" OK ");
if(aux==1){
tON=Pos;
}
if(aux==2){
tOFF=Pos;
}
E = false;
Pos=1;
delay(3000);
aux++;
if (aux==3){
BOM=true;
sp=now.second();
mp=now.minute();
}
}
}
mos1=true;
}
if(aux==3 && mos1==true){
sensorDS18B20.requestTemperatures();
humedad= dht.readHumidity();
temp= dht.readTemperature();
lcd.setCursor(0,0);
lcd.print("T1:");
int t1=sensorDS18B20.getTempCByIndex(0);
lcd.print(t1);
lcd.print(" T2:");
lcd.print(temp);
lcd.print(" H:");
lcd.print(humedad);
lcd.setCursor(0,1);
lcd.print("tON:");
lcd.print(tON);
lcd.print("m tOFF:");
lcd.print(tOFF);
lcd.print("m ");
tMos=time;
}
}

También podría gustarte