#define TRIG 5
#define ECHO 18
#define LED_LOW 19
#define LED_MED 21
#define LED_HIGH 22
#define LED_FULL 23
long duration;
int distance;
void setup() {
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(LED_LOW, OUTPUT);
pinMode(LED_MED, OUTPUT);
pinMode(LED_HIGH, OUTPUT);
pinMode(LED_FULL, OUTPUT);
Serial.begin(115200);
}
void loop() {
// Trigger ultrasonic pulse
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
duration = pulseIn(ECHO, HIGH);
distance = duration * 0.034 / 2; // convert to cm
Serial.print("Distance from sensor: ");
Serial.print(distance);
Serial.println(" cm");
// Reset LEDs
digitalWrite(LED_LOW, LOW);
digitalWrite(LED_MED, LOW);
digitalWrite(LED_HIGH, LOW);
digitalWrite(LED_FULL, LOW);
// Tank height assumption = 30 cm
if (distance > 20) {
Serial.println("Water Level: LOW");
digitalWrite(LED_LOW, HIGH);
} else if (distance > 10 && distance <= 20) {
Serial.println("Water Level: MEDIUM");
digitalWrite(LED_MED, HIGH);
} else if (distance > 5 && distance <= 10) {
Serial.println("Water Level: HIGH");
digitalWrite(LED_HIGH, HIGH);
} else if (distance <= 5) {
Serial.println("Water Level: FULL");
digitalWrite(LED_FULL, HIGH);
}
delay(1000);
}