#include <LiquidCrystal_I2C.h>
#define TRIG_PIN 3
#define ECHO_PIN 2
#define BUZZER_PIN 7
#define redLED_PIN 6
#define greenLED_PIN 4
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println(" Ultrasonic Sensor Initialized");
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(redLED_PIN, OUTPUT);
pinMode(greenLED_PIN, OUTPUT);
lcd.init();
lcd.backlight();
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
long duration = pulseIn(ECHO_PIN, HIGH);
int distance = duration * 0.034 /2;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
lcd.setCursor(0, 2);
if (distance < 10 ) {
Serial.println("Status: Low Water level");
lcd.print("Status: Low");
digitalWrite(greenLED_PIN, HIGH);
digitalWrite(redLED_PIN, LOW);
tone(BUZZER_PIN, 1500, 500);
} else {
Serial.println("Status: High Water Level");
lcd.print("Status: High");
digitalWrite(redLED_PIN, HIGH);
digitalWrite(greenLED_PIN, LOW);
tone(BUZZER_PIN, 1000, 500);
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" WAN ANUAR IMAN ");
lcd.setCursor(0, 1);
lcd.print("Water level: ");
lcd.print(distance);
lcd.print(" cm");
delay(2000);
}