#define BLYNK_TEMPLATE_ID "TMPL64tg3Wg_7"
#define BLYNK_TEMPLATE_NAME "Water Level Monitoring"
#define BLYNK_AUTH_TOKEN "YhMSUr8hpsMUYtGh-E6M1yakxuyWQ2MJ"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#define TRIGPIN 12 // Pin untuk Trigger
#define ECHOPIN 14 // Pin untuk Echo
#define LED_RED 26 // Pin untuk LED Merah
#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
void setup() {
Serial.begin(115200);
pinMode(TRIGPIN, OUTPUT);
pinMode(ECHOPIN, INPUT);
pinMode(LED_RED, OUTPUT);
pinMode(LED_BUILTIN, OUTPUT); // Inisialisasi pin LED bawaan
// Inisialisasi LED dalam keadaan mati
digitalWrite(LED_RED, 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
// Mengatur LED berdasarkan level air
if (distance >= 3 && distance < 15) {
// Jika jarak dari sensor ke air adalah antara 3 cm dan 15 cm, nyalakan LED merah
digitalWrite(LED_RED, HIGH);
} else if (distance >= 1 && distance < 3) {
// Jika jarak dari sensor ke air adalah antara 1 cm dan 3 cm, matikan LED merah
digitalWrite(LED_RED, LOW);
} else {
// Jika jarak di luar rentang yang ditentukan, matikan LED merah
digitalWrite(LED_RED, LOW);
}
// 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
}