#include <LiquidCrystal_I2C.h>
#include <DHT.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(15, DHT22);
const int echoPin = 18;
const int trigPin = 19;
const int green = 14;
const int orange = 13;
const int red = 12;
const int buzz = 16;
unsigned long previousMillis = 0;
const long interval = 2000; // Interval for sensor readings (2 seconds)
void setup() {
lcd.init();
lcd.backlight();
lcd.display();
lcd.setCursor(0, 0);
lcd.print("Flood Monitoring");
lcd.setCursor(0, 1);
lcd.print("Alerting System");
delay(5000);
lcd.clear();
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
pinMode(green, OUTPUT);
pinMode(orange, OUTPUT);
pinMode(red, OUTPUT);
pinMode(buzz, OUTPUT);
digitalWrite(green, LOW);
digitalWrite(orange, LOW);
digitalWrite(red, LOW);
digitalWrite(buzz, LOW);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
float temperature = dht.readTemperature();
int humidity = dht.readHumidity();
if (isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" *C");
unsigned long duration;
float distance;
int percentage;
int percent;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
percentage = (distance / 400) * 100;
percent = 99 - percentage;
percent = constrain(percent, 0, 100);
lcd.setCursor(0, 0);
lcd.print("Water Level:");
lcd.print(percent);
lcd.print("% ");
lcd.setCursor(0, 1);
lcd.print("Temp:");
lcd.print(temperature);
lcd.print("*C");
if (percent > 66) {
digitalWrite(red, HIGH);
digitalWrite(green, LOW);
digitalWrite(orange, LOW);
tone(buzz, 1000, 1000);
} else if (percent > 33 && temperature <= 27 || humidity >= 90) {
tone(buzz, 1000, 1000);
digitalWrite(orange, HIGH);
digitalWrite(red, LOW);
digitalWrite(green, LOW);
noTone(buzz);
} else {
digitalWrite(green, HIGH);
digitalWrite(orange, LOW);
digitalWrite(red, LOW);
noTone(buzz);
}
}
}