#define TRIG_PIN 5
#define ECHO_PIN 18
#define LED_LOW 21
#define LED_MEDIUM 22
#define LED_HIGH 23
#define BUZZER 19
long duration;
float distance;
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED_LOW, OUTPUT);
pinMode(LED_MEDIUM, OUTPUT);
pinMode(LED_HIGH, OUTPUT);
pinMode(BUZZER, OUTPUT);
}
void loop() {
// Send ultrasonic pulse
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.println(distance);
// Tank height example: 30 cm
if (distance > 20) {
// LOW water
digitalWrite(LED_LOW, HIGH);
digitalWrite(LED_MEDIUM, LOW);
digitalWrite(LED_HIGH, LOW);
digitalWrite(BUZZER, LOW);
}
else if (distance > 10 && distance <= 20) {
// MEDIUM water
digitalWrite(LED_LOW, LOW);
digitalWrite(LED_MEDIUM, HIGH);
digitalWrite(LED_HIGH, LOW);
digitalWrite(BUZZER, LOW);
}
else {
// HIGH water (Tank Full)
digitalWrite(LED_LOW, LOW);
digitalWrite(LED_MEDIUM, LOW);
digitalWrite(LED_HIGH, HIGH);
digitalWrite(BUZZER, HIGH); // Alert when full
}
delay(1000);
}