Problema con ds3231 y dht22

Hola buenas tardes , queria exponeros un problema que me ha surgido en mi proyecto.

Es un proyecto para un invernadero tipico (control de temperatura , humedad , aireacion )

Lo tengo casi finiquitado pero cuando meti el RTC ds3231 me dejo de funcionar , no pasaba del void setup , investigando resulta que las lineas que lo provocan son las que leen los valores del DHT en el void loop.

Si las quito funciona correctamente el programa(o casi), pero entra en el loop.

Y cuando le quito la linea de la humedad solo , por el monitor veo que esta en un bucle en void setup....

Alguna idea al respecto?

Muchas gracias

**Moderador:**Hola, bienvenido al foro Arduino.
En la sección proyectos tienes estos dos hilos que debiste haber leído antes de postear

Consulta movida a Software.
No reune condiciones de Proyecto.
Algo mas:

  1. Los títulos y mensajes se escriben con minúsculas. Usar mayúsculas es como gritar y no se permite.
  2. Título : "PROBLEMA CON PROYECTO (NOVATO)" no es un título que refleje lo que consultas.
    Puedes usar Problema con DS3231 por ejemplo o Problema con RTC.

Gracias

Porque no publicas el código completo y además indicas los enlaces de donde has descargado las librerías.
Si son del IDE solo indica descargada con el gestor de librerías.

Hola buenos días , estoy liado con un proyecto de un invernadero , el proyecto me funciona con el dht22 y un rtc1302, y un lcd16x2 i2c el problema es cuando pongo el rtc ds3231, las líneas que llaman a las medidas del dht, parecen no compatibles con el rrc3231, el programa no pasa del void setup, con esas dos líneas activas.....alguna idea?.

Muchas gracias.

Moderador
Estas liado con las normas de este foro porque tienes otro hilo idéntico en Software (Problema con ds321 y dht22) y vas preguntando lo mismo por todos lados.
Esto es una falta a las normas del foro conocido como doble posteo que te invito a leer.
Te advierto que de continuar eres pasible de suspención para poder ingresar al foro.

Lee las Normas del foro

Podrías colgar el código para hacernos una idea

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 {}

}