Hola llevo unas semanas trabajando con Arduino, ósea que soy principiante.
Lo que quiero conseguir con mi trabajo es registrar las condiciones del ambiente con algunos sensores para arduino. El problema es que cuando intento usar mas de un sensor o modulo al tiempo algo sale mal!
*Arduino Leonardo original
*Sensor DHT22 // Sensor temperatura y humedad
*Modulo bateria DS1307 // Relog en tiempo real
*Sensor BH1750 // Luxometro
Los sensores y módulos por separado funcionan bien, el relog es capaz de dar fechas precisas y persistentes, el sensor de luz mide correctamente las cantidad de luz y el DHT mide correctamente la humedad y la temperatura. El principal problema es cuando uso 2 sensores o modulos en el mismo codigo "uno parece cancelar el otro"
Por ejemplo este código corre correcto el DHT22 :
// Relog de tiempo real
#include "RTClib.h"
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
// Sensor DHT22
#include "DHT.h"
#define DHTPIN 2 // Digital pin connected to the DHT sensor
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Constantes
const float tempMin = 19.0;
const float tempMax = 25.0;
const float humMin = 50.0;
const float humMax = 70.0;
const int releCH1 = 4;
const int releCH2 = 5;
const int releCH3 = 6;
const int releCH4 = 7;
void setup() {
Serial.begin(9600);
while (!Serial) {
;
}
Serial.println("---- INIT ----");
dht.begin();
// rtc.begin(); Esta es la linea que genera el problema
pinMode(releCH1, OUTPUT); // Calefactor
pinMode(releCH2, OUTPUT); // Humificador
pinMode(releCH3, OUTPUT); // Luz
pinMode(releCH4, OUTPUT); // Ventiladores
// digitalWrite(releCH3, HIGH);
// digitalWrite(releCH4, HIGH);
}
void loop() {
delay(2000);
float humedad = dht.readHumidity();
float temperatura = dht.readTemperature();
// Modulo actuador temperatura
if(temperatura <= tempMin){
Serial.print("!!ALERTA: Temperatura Baja ");
Serial.print(temperatura);
Serial.println(" °C - Calefactor encendido");
// Enciende calefactor
digitalWrite(releCH1, HIGH);
}else if(temperatura >= tempMax){
Serial.print("!!ALERTA: Temperatura Alta ");
Serial.print(temperatura);
Serial.println(" °C - Calefactor apagador");
// Apaga calefactor
digitalWrite(releCH1, LOW);
}
Serial.print("\n");
// Modulo actuador humedad
if(humedad <= humMin){
Serial.print("!!ALERTA: Humedad Baja ");
Serial.print(humedad);
Serial.println(" °C - Humificador encendido");
// Enciende humificador
digitalWrite(releCH2, HIGH);
}else if(humedad >= humMax){
Serial.print("!!ALERTA: Humedad Alta ");
Serial.print(humedad);
Serial.println(" % - Humificador apagado");
// Apaga humificador
digitalWrite(releCH2, LOW);
}
Serial.print("Temperatura: ");
Serial.print(temperatura);
Serial.print(" - Humedad: ");
Serial.print(humedad);
Serial.print(" - Tiempo: ");
Serial.println(millis());
}
Salida puerto Serial:
![]()
Basta con tan solo descomentar la linea "rtc.begin();" para que deje de leer el sensor DHT22
Salida con la linea descomentada

Lo mismo me sucede cuando intento usar el DHT22 junto con el BH1750
Mi proyecto esta basado en el DHT22
He intentado
- Alimentar los sensores con fuentes externas a arduino: Sin resultado
- Verificar conexiones: Sin resultados
Dudas
- Estoy pasando algo por alto, soy nuevo en programación arduino, vengo de programar en python
*¿ Tengo un conflicto de compatibilidad en mi código o sensores?
GRACIAS ![]()
