#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT22
#define RELAY_PIN 3
DHT dht(DHTPIN, DHTTYPE);
float targetTemp = 20.0;
float minTemp = 15.0;
unsigned long maxRunTime = 3600000;
unsigned long startTime;
void setup() {
pinMode(RELAY_PIN, OUTPUT);
dht.begin();
digitalWrite(RELAY_PIN, LOW);
}
void loop() {
float temperature = dht.readTemperature();
if (isnan(temperature)) {
return;
}
if (temperature < minTemp && millis() - startTime > maxRunTime) {
digitalWrite(RELAY_PIN, LOW);
startTime = 0;
} else if (temperature < targetTemp) {
digitalWrite(RELAY_PIN, HIGH);
if (startTime == 0) {
startTime = millis();
}
} else {
digitalWrite(RELAY_PIN, LOW);
startTime = 0;
}
delay(2000);
}