#define BLYNK_TEMPLATE_ID "TMPL6olH-3jOa"
#define BLYNK_TEMPLATE_NAME "Water Level Monitoring"
#define BLYNK_AUTH_TOKEN "XjouUG84i7g3al1VXIdjUTCHwL3AdHr5"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#define TRIGPIN 12 // Pin untuk Trigger
#define ECHOPIN 14 // Pin untuk Echo
#define LED_GREEN 26 // Pin untuk LED Hijau
#define LED_BUILTIN 2 // Pin untuk LED bawaan (biru)
// Blynk credentials
char auth[] = BLYNK_AUTH_TOKEN; // Token Blynk Anda
char ssid[] = "Wokwi-GUEST"; // SSID WiFi Anda
char pass[] = ""; // Password WiFi Anda
long previousDistance = 0; // Menyimpan pembacaan jarak sebelumnya
const int stableThreshold = 2; // Threshold untuk stabilitas
void setup() {
Serial.begin(115200);
pinMode(TRIGPIN, OUTPUT);
pinMode(ECHOPIN, INPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_BUILTIN, OUTPUT); // Inisialisasi pin LED bawaan
// Inisialisasi LED dalam keadaan mati
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_BUILTIN, LOW); // Matikan LED bawaan saat awal
// Inisialisasi Blynk
Blynk.begin(auth, ssid, pass);
}
void loop() {
long duration, distance;
// Menghitung jarak menggunakan sensor ultrasonik
digitalWrite(TRIGPIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGPIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGPIN, LOW);
duration = pulseIn(ECHOPIN, HIGH);
distance = duration * 0.034 / 2; // Menghitung jarak dalam cm
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
// Kirim data ke Blynk
Blynk.virtualWrite(V0, distance); // Kirim jarak ke Blynk di virtual pin V0
// Cek stabilitas pembacaan
if (abs(distance - previousDistance) < stableThreshold) {
// Hanya jika jarak stabil, atur LED
if (distance > 4 && distance < 15) {
// Jika jarak dari sensor ke air adalah antara 3 cm dan 15 cm, nyalakan LED hijau
digitalWrite(LED_GREEN, HIGH);
} else {
// Jika jarak di luar rentang yang ditentukan, matikan LED hijau
digitalWrite(LED_GREEN, LOW);
}
}
previousDistance = distance; // Simpan pembacaan jarak saat ini
// Cek koneksi Blynk
if (Blynk.connected()) {
digitalWrite(LED_BUILTIN, HIGH); // Nyalakan LED bawaan jika terhubung ke Blynk
} else {
digitalWrite(LED_BUILTIN, LOW); // Matikan LED bawaan jika tidak terhubung
}
// Jalankan Blynk
Blynk.run();
delay(1000); // Delay 1 detik sebelum pengukuran berikutnya
}