#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL6MD1bEnHU"
#define BLYNK_TEMPLATE_NAME "test1"
#define BLYNK_AUTH_TOKEN "gWAIe5Y5uP5Ly7xNlYM0l6kfsYg0mQ__"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#define TRIG_PIN 13
#define ECHO_PIN 12
#define BUZZER_PIN 19
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD 16x2
const int thresholdHeight = 30; // Ambang batas level air rendah (dalam cm)
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("TANGKI AIR");
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
timer.setInterval(1000L, sendData);
}
void loop()
{
Blynk.run();
timer.run();
}
void sendData()
{
long duration, distance;
// Mengirim pulsa ultrasonik
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Menghitung durasi echo
duration = pulseIn(ECHO_PIN, HIGH);
// Menghitung jarak (dalam cm)
distance = duration * 0.034 / 2;
// Menampilkan hasil pada LCD
lcd.setCursor(0, 1);
lcd.print("Ketinggian: ");
lcd.print(distance);
lcd.print(" cm ");
// Cek level air
if (distance < thresholdHeight) {
digitalWrite(BUZZER_PIN, HIGH); // Nyalakan buzzer
} else {
digitalWrite(BUZZER_PIN, LOW); // Matikan buzzer
}
Blynk.virtualWrite(V0, distance);
delay(1000); // Delay sebelum pengukuran berikutnya
}