#define BLYNK_PRINT Serial //deklarasi untuk menampilkan keterangan mulai koneksi ke blynk pada serial monitor
#define BLYNK_TEMPLATE_ID "TMPLa88krTYd" //template id dari template blynk yang dibuat, bagian dalam "" disesuaikan dengan device id masing-masing yang bisa di cek di bagian Device Info
#define echoPin 15 //deklarasi pin echo yang dihubungkan ke pin 3 dan diberi nama variabel echoPin
#define trigPin 2 //deklarasi pin trigger yang dihubungkan ke pin 2 dan diberi nama variabel trigPin
#include <BlynkSimpleEsp32.h>
#define LED1 13 //led rendah
#define LED2 12 // led sedang
#define LED3 14 // led Tinggi
char auth[] = "_1wS51eNLXbRuap-Zp296vIralP0PV8Z"; //deklarasi auth token dari device blynk yang dibuat, bisa dilihat pada bagian device info
char ssid[] = "Wokwi-GUEST"; //ssid wifi yang digunakan
char pass[] = ""; //password wifi yang digunakan
BlynkTimer timer; //merubah perintah BlynkTimer menjadi "timer"
void kirimData(){ //void untuk mengirimkan pembacaan sensor atau nilai ke blynk
//float ultrasonik(){
digitalWrite(trigPin, LOW); //perintah untuk memastikan sensor ultrasonik belum memancarkan gelombang
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); //sensor ultrasonik memancarkan gelombang ultrasoniknya
delayMicroseconds(10); //durasi pancaran gelombang ultrasonik
digitalWrite(trigPin, LOW); //perintah untuk menghentikan pancaran gelombang ultrasonik
int durasiPantulan = pulseIn(echoPin, HIGH); //perintah untuk membaca jeda ketika gelombang dipancarkan oleh trigger kemudian diterima kembali oleh echo
float jarak = durasiPantulan * 0.034 / 2; //rumus jarak dalam cm
Blynk.virtualWrite(V1, jarak);
Serial.print("Jarak : ");
Serial.print(jarak);
Serial.println("cm ");
Serial.println("------");
float jarak = ultrasonik();
//ketinggian air rendah, jarak antara pelampung ke ultrasonik jauh
if(jarak>150){
digitalWrite(lED1, HIGH);
digitalWrite(lED2, LOW);
digitalWrite(lED3, LOW);
}
//ketinggian air sedang, jarak antara pelampung ke ultrasonik sedang
else if(jarak<=150 && jarak>100){
digitalWrite(lED2, HIGH);
digitalWrite(LED3, LOW);
digitalWrite(LED1, LOW);
}
//ketinggian air tinggi, jarak ultrasonik ke pelampung dekat
else if(jarak<=1000){
digitalWrite(LED3, HIGH);
digitalWrite(LED2, LOW);
}
}
BLYNK_WRITE(V0){ //perintah untuk membaca nilai yang dikirim oleh blynk
int pinVal = param.asInt(); //perintah untuk memasukkan nilai dari pin virtual blynk ke variabel pinVal
digitalWrite(LED1, pinVal); //perintah untuk membuat LED menyala sesuai dengan kondisi button virtual pada blynk
}
void setup() {
// put your setup code here, to run once:
pinMode(echoPin, INPUT); //inisialisasi pin 3 dengan variabel ehoPin sebagai pin input
pinMode(trigPin, OUTPUT); //inisialisasi pin 2 dengan variabel trigPin sebagai pin output
Serial.begin(115200);
Blynk.begin(auth, ssid, pass); //inisialisasi komunikasi dengan server blynk
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
timer.setInterval(2000L, kirimData); //interval pengiriman data dari mikrokontroler ke blynk
}
void loop() {
// put your main code here, to run repeatedly:
Blynk.run(); //menjalankan perintah yang ada di library blynk
timer.run(); //menjalankan timer dari blynk
}