#define TRIG_PIN 5
#define ECHO_PIN 18
#define BUZZER_PIN 23
#define LED_PIN 19
// Konstanta tinggi tangki dalam cm
const float TANK_HEIGHT = 50.0; // Tinggi tangki dalam cm
const float WARNING_LEVEL = 10.0; // Batas minimal air dalam cm
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(LED_PIN, LOW);
}
void loop() {
float distance = measureDistance();
float waterLevel = TANK_HEIGHT - distance; // Menghitung ketinggian air
Serial.print("Ketinggian Air: ");
Serial.print(waterLevel);
Serial.println(" cm");
// Peringatan jika air terlalu rendah
if (waterLevel <= WARNING_LEVEL) {
digitalWrite(BUZZER_PIN, HIGH);
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(LED_PIN, LOW);
}
delay(1000);
}
float measureDistance() {
// Kirim sinyal trigger
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Hitung durasi echo
long duration = pulseIn(ECHO_PIN, HIGH);
// Hitung jarak dalam cm
float distance = (duration * 0.034) / 2;
return distance;
}