#define TRIG 5
#define ECHO 18
#define BUZZER 2
float tankHeight = 100.0;
long duration;
float distance;
float waterLevel;
void setup() {
Serial.begin(115200);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(BUZZER, OUTPUT);
Serial.println("Flood Monitoring System Started...");
}
float getDistance() {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
duration = pulseIn(ECHO, HIGH);
distance = duration * 0.034 / 2;
return distance;
}
void loop() {
distance = getDistance();
waterLevel = tankHeight - distance;
Serial.println("------------");
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
Serial.print("Water Level: ");
Serial.print(waterLevel);
Serial.println(" cm");
if (waterLevel > 80) {
Serial.println("FLOOD ALERT!");
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
} else if (waterLevel > 50) {
Serial.println("Warning Level");
digitalWrite(BUZZER, HIGH);
delay(500);
digitalWrite(BUZZER, LOW);
delay(500);
} else {
Serial.println("Safe Level");
digitalWrite(BUZZER, LOW);
delay(1000);
}
}