#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Address LCD I2C 20x4
const int trigPin = 23; // Trig pin sensor HC-SR04
const int echoPin = 26; // Echo pin sensor HC-SR04
const int buzzerPin = 25; // Pin buzzer
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Water Tank Level:");
}
void loop() {
long duration;
int distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
lcd.setCursor(0, 1);
if (distance >= 155) {
lcd.print("Tank Level: 5");
} else if (distance <= 10) {
lcd.print("Tank Level: 100%");
digitalWrite(buzzerPin, HIGH);
} else {
int level = map(distance, 155, 10, 5, 100);
lcd.print("Tank Level: " + String(level) + "%");
digitalWrite(buzzerPin, LOW);
}
delay(500); // Delay untuk mengurangi kecepatan pembacaan sensor
}