es un poco lioso pero soy novato perdonarme , aqui teneis el codigo
#include <RTClib.h>
RTC_DS3231 rtc ;
char daysOfTheWeek[7][12] = {“Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”};
//#include <virtuabotixRTC.h>
//Wiring SCLK - 6, I/O - 7, CE - 8
//Or CLK - 6 , DAT - 7, Reset - 8
//virtuabotixRTC myRTC(6,7,8); //If you change the wiring change the pins here also
///-----INCLUIR LCD-----------
/
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
*/
//----INCLUIR LCD_I2C---------
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display
//----INCLUIR DHT------------
#include <DHT.h>
#define DHTPIN 8//Pin 7 del Arduino Uno recibe lectura del sensor
#define DHTTYPE DHT22 //Definir el sensor como un DHT22
DHT dht(DHTPIN, DHTTYPE);
float temp;
float hum;
//DETERMINAMOS PINES
int LUZ = 29;
int CALENTADOR = 31.; //pines usados para cada rele
int HUMIDI = 27;
int VENT_UL=23;
int VENTILADOR = 25;
//VARIABLES
bool VENT_ul= false;
bool VENTILACION = false;
bool AIREACION = false;
bool ULTRASONIDO= false;
unsigned long tiempoprevio=0;
void setup()
{
Serial.begin(9600);
rtc.begin();
Wire.begin();
// Wire.begin();
//–DS1302----//
// seconds, minutes, hours, day of the week, day of the month, month, year
//USAR SETUP SÓLO PARA CONFIGURAR EL RELOJ----------
// myRTC.setDS1302Time(30, 23, 20, 7, 31, 5, 2020);
//myRTC.setDS1302Time(00,0 , 0, 7, 10, 5,020);
/—DS3231------/
//rtc.adjust(DateTime(DATE, TIME));
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
lcd.init();
lcd.backlight();//Encender la luz de fondo.
lcd.setCursor(0, 0);
lcd.print(“MUSH’O’MATIK”);
lcd.setCursor(0, 1);
delay(1000);
lcd.clear();
Serial.println("---------------MUSH’O’MATIK----------------");
pinMode(CALENTADOR, OUTPUT); //resistencia es una salida digital
digitalWrite(CALENTADOR, HIGH); // resistencia inicia en apagada
pinMode(VENTILADOR, OUTPUT); //ventilador es una salida digital
digitalWrite(VENTILADOR, HIGH); // ventilador inicia en apagada
pinMode(HUMIDI, OUTPUT);
digitalWrite(HUMIDI, HIGH);
pinMode(LUZ, OUTPUT);
digitalWrite(LUZ, HIGH);
pinMode(VENT_UL, OUTPUT);
digitalWrite(VENT_UL, HIGH);
}
void loop(){
DateTime now = rtc.now();
unsigned long tiempoahora=millis(); // va actualizando los millis actuales
delay(2000);
temp = dht.readTemperature();
//hum = dht.readHumidity();
//-----------envia lecturas a pantalla---------
Serial.print(“Current Date / Time: “);
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(now.day()); //You can switch between day and month if you’re using American system
Serial.print(”/”);
Serial.print(now.month());
Serial.print("/");
Serial.print(now.year());
Serial.print(" “);
Serial.print(now.hour ());
Serial.print(”:");
Serial.print(now.minute());
Serial.print(":");
Serial.println(now.second());
Serial.print(“Hume “);
Serial.print(hum);
Serial.print(” %”);
Serial.print(“Temp: “);
Serial.print(temp);
Serial.println(” C “);
lcd.clear();
lcd.setCursor(0, 0); //Muestra la temperatura
lcd.print(temp);
lcd.print(” C”);
lcd.setCursor(8, 0); //Muestra la humedad
lcd.print(hum);
lcd.print(" Hr");
lcd.setCursor(0, 1); //Muestra la temperatura
lcd.print(now.hour());
lcd.print(":");
lcd.print(now.minute());
lcd.print(":");
lcd.println(now.second());
delay(1000);
lcd.clear();
lcd.setCursor(0, 0); //Muestra la temperatura
lcd.print(temp);
lcd.print(" C");
lcd.setCursor(8, 0); //Muestra la humedad
lcd.print(hum);
lcd.print(" Hr");
lcd.setCursor(0, 1);
//uso del calentador
if((temp>=15.0) && (temp<=24) ){
digitalWrite(CALENTADOR,LOW);
lcd.clear();
lcd.setCursor(0, 0); //Muestra la temperatura
lcd.print(temp);
lcd.print(" C");
lcd.setCursor(8, 0); //Muestra la humedad
lcd.print(hum);
lcd.print(" Hr");
lcd.setCursor(0, 1);
lcd.print(" CALENTANDO");
Serial.print("Temp baja ");
Serial.println(“calentador_on”);
delay(500);
}
if((temp>24)&& (temp<=25.5) ){
digitalWrite(CALENTADOR,LOW);
lcd.clear();
lcd.setCursor(0, 0); //Muestra la temperatura
lcd.print(temp);
lcd.print(" C");
lcd.setCursor(8, 0); //Muestra la humedad
lcd.print(hum);
lcd.print(" Hr");
lcd.setCursor(0, 1);
lcd.print(“SETAS AGUSTO”);
Serial.print(“Setas Agusto “);
Serial.println(“calentador_on”);
delay(500);
}
if ((temp>25.5)&& (temp<=27)){
digitalWrite(CALENTADOR,HIGH);
digitalWrite(VENTILADOR,HIGH);
lcd.clear();
lcd.setCursor(0, 0); //Muestra la temperatura
lcd.print(temp);
lcd.print(” C”);
lcd.setCursor(8, 0); //Muestra la humedad
lcd.print(hum);
lcd.print(" Hr");
lcd.setCursor(0, 1);
lcd.print(“EN TEMPERATURA MAX”);
Serial.print("Setas Calientes ");
Serial.println(“calentador_off”);
delay(500);
}
if(temp>27){
digitalWrite(VENTILADOR,LOW);
VENTILACION=true;
lcd.clear();
lcd.setCursor(0, 0); //Muestra la temperatura
lcd.print("PELIGRO ");
lcd.print(temp);
lcd.setCursor(0, 1);
lcd.print(“AIREACION A TOPE”);
lcd.autoscroll();
Serial.print("peligro ");
Serial.println(“aireacion”);
delay(500);
}if (temp<27 && AIREACION==true ){
digitalWrite(VENTILADOR,LOW);
}else{
VENTILACION=false;
}
//uso del humdoficador ** no apaga ultrasonido cuando sube a 27 grados
if (hum < 85 && VENTILACION==false){
digitalWrite(HUMIDI, LOW ); // Enciende el ultrasonido
digitalWrite(VENT_UL, LOW );
ULTRASONIDO=true;
VENT_ul=true;
lcd.clear();
lcd.setCursor(0, 0); //Muestra la temperatura
lcd.print(temp);
lcd.print(" C");
lcd.setCursor(8, 0); //Muestra la humedad
lcd.print(hum);
lcd.print(" Hr");
lcd.setCursor(0, 1);
lcd.print(“ULTRASONIDO ON”);
Serial.print(“ULTRASONIDO_ON”);
Serial.println(“VENT_ON”);
Serial.println(tiempoahora );
delay(500);
}
else if (hum < 85 && VENTILACION==true){
digitalWrite(HUMIDI, HIGH ); // Enciende el ultrasonido
digitalWrite(VENT_UL, LOW );
ULTRASONIDO=false;
VENT_ul=true;
lcd.init();
lcd.setCursor(0, 0); //Muestra la temperatura
lcd.print(temp);
lcd.print(" C");
lcd.setCursor(8, 0); //Muestra la humedad
lcd.print(hum);
lcd.print(" Hr");
lcd.setCursor(0, 1);
lcd.print(“ULTROFF/ VENTON”);
Serial.print(“ULTRASONIDO_ON”);
Serial.println(“VENT_ON”);
Serial.println(tiempoahora );
delay(500);
}
else if(hum > 85 && ULTRASONIDO==true ){
digitalWrite(HUMIDI, HIGH); // apaga elultrasonido.
ULTRASONIDO=false;
VENT_ul=true;
tiempoprevio=millis();
lcd.clear();
lcd.setCursor(0, 0); //Muestra la temperatura
lcd.print(temp);
lcd.print(" C");
lcd.setCursor(8, 0); //Muestra la humedad
lcd.print(hum);
lcd.print(" Hr");
lcd.setCursor(0, 1);
lcd.print(“ULTRASONIDO OFF”);
Serial.print(“ULTRASONIDO_OFF”);
Serial.print(“VENT_ON”);
Serial.print(tiempoprevio );
Serial.print(tiempoahora );
delay(500);
}
else if (VENT_ul==true && ULTRASONIDO==false && (tiempoahora-tiempoprevio>=10000)) {
tiempoprevio=tiempoahora;
digitalWrite(HUMIDI, HIGH); // apaga elultrasonido.
digitalWrite(VENT_UL, HIGH);//APAGA EL VENTILADOR 5ºº DESPUES DEL ULTRASONIDO
ULTRASONIDO=false;
VENT_ul=false;
Serial.print(“ULTRASONIDO_OFF”);
Serial.println(“VENT_OFF”);
delay(500);
}else {}
}