#define BLYNK_TEMPLATE_ID "TMPL6sUrLhqUF"
#define BLYNK_TEMPLATE_NAME "COBA COBA"
#define BLYNK_AUTH_TOKEN "_rdGMc0WK06Eeiead7N1fiKbJQTXjiG8"
#include <BlynkSimpleEsp32.h>
#include <WiFi.h>
#include <WiFiClient.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define triggerPIN 4
#define echoPIN 0
#define LED1 14
#define LED2 12
#define LED3 13
long duration;
int distance;
unsigned long previousMillis = 0;
const unsigned long interval = 10000;
void setup() {
Blynk.begin(auth, ssid, pass);
Serial.begin(9600);
pinMode(triggerPIN, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(echoPIN, INPUT);
}
void loop() {
Blynk.run();
digitalWrite(triggerPIN, LOW);
delayMicroseconds(2);
digitalWrite(triggerPIN, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPIN, LOW);
duration = pulseIn(echoPIN, HIGH);
distance = duration * 0.034 / 2;
Blynk.virtualWrite(V3, distance);
if (millis() - previousMillis >= interval) {
previousMillis = millis();
if (distance < 33) {
Blynk.logEvent("1", "turn on irrigation!!!");
}
else if (distance >= 33 && distance <= 66) {
Blynk.logEvent("2", "the water level is stable");
}
else if (distance >= 66 && distance <= 100) {
Blynk.logEvent("3", "turn on drainage!!!");
}
}
if (distance > 63 && distance < 100) {
Serial.println("kedalaman air kurang dari 100cm");
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
} else if (distance > 33 && distance < 66) {
Serial.println("Jarak berada diantara 33 cm hingga 66 cm");
digitalWrite(LED2, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED3, HIGH);
} else if (distance > 0 && distance < 33) {
Serial.println("Jarak kurang dari 33 cm ");
digitalWrite(LED3, LOW);
digitalWrite(LED2, HIGH);
digitalWrite(LED1, LOW);
}
}