#define BLYNK_TEMPLATE_ID "TMPL6NDXJ28g0"
#define BLYNK_TEMPLATE_NAME "monitoring tandon air"
#define BLYNK_AUTH_TOKEN "uvz1CCzmPUo4tAO0ZlpEqVfbaynUbWBh"
char auth[] = "uvz1CCzmPUo4tAO0ZlpEqVfbaynUbWBh";
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#define Echo 35
#define Trig 32
#define Merah 5
#define Oren 17
#define Hijau 16
#define Biru 4
#define relay 13
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
float distance = 0;
float ketinggian = 0;
int SW_relay = 0;
//int nada;
BLYNK_WRITE(V6)
{
SW_relay = param.asInt();
if (SW_relay ==1){
digitalWrite(relay, HIGH);
Serial.println("Relay terbuka");
Blynk.virtualWrite(V6, HIGH);
}else{
digitalWrite(relay, LOW);
Serial.println("Relay tertutup");
Blynk.virtualWrite(V6, LOW);
}
}
void jarak(){
digitalWrite(Trig,LOW);
delay(2);
digitalWrite(Trig, HIGH);
delay(10);
digitalWrite(Trig, LOW);
int duration = pulseIn(Echo, HIGH);
distance = duration * 0.034 / 2;
ketinggian = 400 - distance ;
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" CM");
Serial.print("Ketinggian Air : ");
Serial.print(ketinggian);
Serial.println(" cm");
}
void kirim_blynk(){
Blynk.virtualWrite(V0, ketinggian);
Blynk.virtualWrite(V5, ketinggian);
if (distance < 50){
Blynk.virtualWrite(V1, 0);
Blynk.virtualWrite(V2, 0);
Blynk.virtualWrite(V3, 0);
Blynk.virtualWrite(V4, 1);
}
else if (distance >= 50 && distance <= 200){
Blynk.virtualWrite(V1, 0);
Blynk.virtualWrite(V2, 0);
Blynk.virtualWrite(V3, 1);
Blynk.virtualWrite(V4, 0);
}
else if (distance > 200 && distance <= 350){
Blynk.virtualWrite(V1, 0);
Blynk.virtualWrite(V2, 1);
Blynk.virtualWrite(V3, 0);
Blynk.virtualWrite(V4, 0);
}
else if (distance > 350 && distance <= 400){
Blynk.virtualWrite(V1, 1);
Blynk.virtualWrite(V2, 0);
Blynk.virtualWrite(V3, 0);
Blynk.virtualWrite(V4, 0);
}
}
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
pinMode(Merah, OUTPUT);
pinMode(Oren, OUTPUT);
pinMode(Hijau, OUTPUT);
pinMode(Biru, OUTPUT);
pinMode(relay, OUTPUT);
timer.setInterval(2000L,kirim_blynk);
}
void loop() {
digitalWrite(Merah, LOW);
digitalWrite(Oren, LOW);
digitalWrite(Hijau, LOW);
digitalWrite(Biru, LOW);
jarak();
int ketinggian = 400 - distance ;
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" Cm");
Serial.print("Ketinggian Air : ");
Serial.print(ketinggian);
Serial.println(" Cm");
if( distance > 0 && distance < 50)
{
Serial.println("Penuh");
digitalWrite(Biru, HIGH);
}
else if (distance > 50 && distance < 150)
{
Serial.println("Cukup");
digitalWrite(Hijau, HIGH);
//tone(bz, nada);
}
else if (distance > 150 && distance < 350)
{
Serial.println("Kurang");
digitalWrite(Oren, HIGH);
//tone(bz, nada);
}
else
{
Serial.println("Habis");
digitalWrite(Merah, HIGH);
}
Blynk.run();
timer.run();
delay(500);
}