#include <DHT.h>
#define DHTPIN 25
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#define TRIG_PIN 15
#define ECHO_PIN 2
#define PIR_PIN 19
#define PIR_LED 18
// LEDs
#define LED_GREEN 14
#define LED_YELLOW 12
#define LED_RED 13
void setup() {
Serial.begin(115200);
dht.begin();
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(PIR_PIN, INPUT);
pinMode(PIR_LED, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_YELLOW, OUTPUT);
pinMode(LED_RED, OUTPUT);
}
void loop() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Failed ");
} else {
Serial.print("T: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print("H: ");
Serial.print(humidity);
Serial.println(" %");
if (temperature < 32 && humidity < 65) {
digitalWrite(LED_GREEN, HIGH);
digitalWrite(LED_YELLOW, LOW);
digitalWrite(LED_RED, LOW);
} else if (temperature < 32 && humidity >= 65) {
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_YELLOW, HIGH);
digitalWrite(LED_RED, LOW);
} else {
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_YELLOW, LOW);
digitalWrite(LED_RED, HIGH);
}
}
if (digitalRead(PIR_PIN) == HIGH) {
digitalWrite(PIR_LED, HIGH);
Serial.println("Motion detected!");
} else {
digitalWrite(PIR_LED, LOW);
}
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
float distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(2000);
}