Interferencias entre DHT11 y otros módulos usando librería

Hola.
Estoy creando un reloj con los siguientes componentes:

  • Encoder para el menu.
  • Pantalla Oled I2C.
  • Reloj DS3231 (I2C)
  • dht11

Para las librerías de dht11 uso la adafruit, y también para el oled.

La cuestión es con solo declarar el #include <DHT.h> el reloj deja de funcionar.

¿ Alguien sabe qué puede ser u otra forma de rescatar la temperatura que no sea con esa librería ?

Perdona pero creo que no has leído las normas del foro.

Lo digo porque de haber puesto el código seguramente ya te podríamos dar quizas alguna respuesta.

El reloj DS3231 va entre bornes A4 y A5 y el DHT no puedes conectarlo a esos pines. Si lo haces seguramente tendras un problema del tipo que mencionas, si no, ver el código ayudaría a responderte.
Yo he usado ambas cosas y no me ha dado problemas.

Perdona. Si he leido las normas, pero el código es grande y repartido en varios archivos cpp.

Evidentemente no he conectado el sensor dht11 al mismo pin de I2c.

pongo el codigo del dht11. Por cierto con la sola presencia del archivo .cpp y .h ya no va el reloj. por tanto lo tengo renombrado: (retorna un String porque solo estoy probando)

#include <Arduino.h>

#include <DHT.h>
 
#define DHTPIN 2
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

void dht_setup(){

  dht.begin();
  
}

String getTemp(){
  
  // Leemos la humedad
  float h = dht.readHumidity();
  
  // Leemos la temperatura en grados centígrados
  float t = dht.readTemperature();
 
  // Comprobamos si ha habido algún error en la lectura
  if (isnan(h) || isnan(t)) { 
    return "error";
  }
 
  // Calcular el índice de calor en grados centígrados
  float hic = dht.computeHeatIndex(t, h, false);

  String s = "";

  s = "h "+ String(h, 2);
  s += " "+ String(t, 0);
  s += "c "+ String(hic, 0);

  return "";
}

Sigue siendo un código parcializado.
Nada puedo decirte porque no veo el loop.
Si tu código requiere zipearse, hazlo y lo adjuntas para entender que esta pasando.

Lo que veo ademas es una función incompleta o mal terminada.

  s = "h "+ String(h, 2);
  s += " "+ String(t, 0);
  s += "c "+ String(hic, 0);

  return "";

si lo que pretendes enviar es s al final debería ser un

return s;

no lo que tienes que es un String vacío.

igualmente no se puede afirmar mucho mas porque no se ve loop ni las dependencias de los .cpp y .h que mencionas ni su interacción con el reloj.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.