#include "DHT.h"
// Define sensor type and pin
#define DHTPIN 2
#define DHTTYPE DHT22 // Changed from DHT11 to DHT22
// Define control pins
#define RELAYPIN 3
#define BUTTON_ON 4
#define BUTTON_OFF 5
#define LED_STATUS 6
#define LED_SENSOR 7
DHT dht(DHTPIN, DHTTYPE); // Initialize DHT22
void setup() {
pinMode(RELAYPIN, OUTPUT);
pinMode(BUTTON_ON, INPUT_PULLUP);
pinMode(BUTTON_OFF, INPUT_PULLUP);
pinMode(LED_STATUS, OUTPUT);
pinMode(LED_SENSOR, OUTPUT);
dht.begin();
Serial.begin(9600);
}
void loop() {
// Read temperature and humidity
float temp = dht.readTemperature();
float hum = dht.readHumidity();
// Blink sensor LED to show activity
digitalWrite(LED_SENSOR, HIGH);
delay(100);
digitalWrite(LED_SENSOR, LOW);
// Check for sensor errors
if (isnan(temp) || isnan(hum)) {
Serial.println("Sensor error");
return;
}
// Print readings to Serial Monitor
Serial.print("Temp: "); Serial.print(temp);
Serial.print(" °C, Humidity: "); Serial.println(hum);
// Manual control
if (digitalRead(BUTTON_ON) == LOW) {
digitalWrite(RELAYPIN, HIGH);
} else if (digitalRead(BUTTON_OFF) == LOW) {
digitalWrite(RELAYPIN, LOW);
}
// Automatic control based on temperature
else if (temp > 30) {
digitalWrite(RELAYPIN, HIGH);
} else {
digitalWrite(RELAYPIN, LOW);
}
// Update status LED
digitalWrite(LED_STATUS, digitalRead(RELAYPIN));
delay(2000); // Wait before next reading
}