#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <NewPing.h>
// Konfigurasi WiFi
char auth[] = "YOUR_BLYNK_AUTH_TOKEN";
char ssid[] = "YOUR_WIFI_SSID";
char pass[] = "YOUR_WIFI_PASSWORD";
// Konfigurasi sensor ultrasonik
const int trigPin = 2;
const int echoPin = 3;
const int maxDistance = 200; // Rentang deteksi maksimum dalam centimeter
// Pin yang digunakan
const int ledPin = 4; // LED indikator
// Variabel global
int waterLevel = 0;
// Objek sensor ultrasonik
NewPing sonar(trigPin, echoPin, maxDistance);
// Fungsi untuk membaca ketinggian air
void readWaterLevel()
{
delay(50);
int distance = sonar.ping_cm();
// Mengubah jarak menjadi ketinggian air
// Sesuaikan rumus ini dengan karakteristik waduk yang digunakan
waterLevel = maxDistance - distance;
// Menyimpan ketinggian air ke virtual pin V1 di Blynk
Blynk.virtualWrite(V1, waterLevel);
// Mengatur status LED berdasarkan ketinggian air
if (waterLevel >= 50)
{
digitalWrite(ledPin, HIGH); // Nyalakan LED jika ketinggian air melebihi 50 cm
}
else
{
digitalWrite(ledPin, LOW); // Matikan LED jika ketinggian air kurang dari 50 cm
}
}
void setup()
{
// Mengatur pin sebagai OUTPUT
pinMode(ledPin, OUTPUT);
// Menghubungkan ke WiFi
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.print(".");
}
// Menghubungkan ke Blynk
Blynk.begin(auth, ssid, pass);
}
void loop()
{
Blynk.run();
// Membaca ketinggian air
readWaterLevel();
// Menunda beberapa detik
delay(2000);
}