#include <DHTesp.h>
int trigger = 4;
int echo = 5;
int red = 12;
int orange = 27;
int green = 25;
int buzzer = 12; // Assuming you have a buzzer connected to pin 12
DHTesp dht22;
TempAndHumidity data;
int finding_distance() {
digitalWrite(trigger, HIGH);
delayMicroseconds(10); // Change to 10 microseconds for better accuracy
digitalWrite(trigger, LOW);
float a = pulseIn(echo, HIGH);
return (a * 0.034 / 2);
}
void setup() {
Serial.begin(115200);
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
pinMode(red, OUTPUT);
pinMode(orange, OUTPUT);
pinMode(green, OUTPUT);
pinMode(buzzer, OUTPUT);
dht22.setup(18, DHTesp::DHT22);
}
void loop() {
data = dht22.getTempAndHumidity();
float tempdata = data.temperature;
float humdata = data.humidity;
int distance = finding_distance();
if (tempdata<= 30 && humdata>70 && distance>300) {
digitalWrite(green, HIGH);
digitalWrite(orange, LOW);
digitalWrite(red, LOW);
noTone(buzzer);;
Serial.println("You Are Safe");
} else if (tempdata > 30 && tempdata <= 70 && humdata >= 30 && humdata <= 70 && distance >= 200 && distance <= 300) {
digitalWrite(green, LOW);
digitalWrite(orange, HIGH);
digitalWrite(red, LOW);
noTone(buzzer);
Serial.println("You Are Unsafe");
} else if (tempdata > 70 && humdata < 30 && distance < 200) {
digitalWrite(green, LOW);
digitalWrite(orange, LOW);
digitalWrite(red, HIGH);
tone(buzzer,800); // Turn on the buzzer
Serial.println("You Are in Danger");
}
else {
// Optionally handle cases not matching the specific conditions
digitalWrite(green, LOW);
digitalWrite(orange, LOW);
digitalWrite(red, LOW);
Serial.println("Condition Not Matched");
}
delay(1000);
}