#define BLYNK_TEMPLATE_ID "TMPL6hp0pq6hy"
#define BLYNK_TEMPLATE_NAME "ESP32 Ultrasonic Led RAFI"
#define BLYNK_AUTH_TOKEN "swjCgiNUxzNZw9yZr0LAJ-BS9CptA9lM"
#define ledRed 13
#define ledYellow 12
#define ledGreen 14
#define pinEcho 2
#define pinTrigger 15
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
BlynkTimer timer;
char auth[] = "swjCgiNUxzNZw9yZr0LAJ-BS9CptA9lM";
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
float readUltrasonic() {
digitalWrite(pinTrigger, LOW);
delayMicroseconds(2);
digitalWrite(pinTrigger, HIGH);
delayMicroseconds(10);
digitalWrite(pinTrigger, LOW);
int duration = pulseIn(pinEcho, HIGH);
float dist_cm = duration * 0.034 / 2;
return dist_cm;
}
void sendData() {
float waterLevel = readUltrasonic();
Serial.println("WaterLevel: " + String(waterLevel, 2) + " cm");
Blynk.virtualWrite(V1, waterLevel);
Blynk.virtualWrite(V2, ledGreen);
Blynk.virtualWrite(V3, ledYellow);
Blynk.virtualWrite(V4, ledRed);
Serial.println("------");
}
void setup() {
Serial.begin(115200);
Serial.println("Selamat datang pada sistem tandon air otomatis");
Blynk.begin(auth, ssid, pass);
timer.setInterval(2000L, sendData);
pinMode(pinEcho, INPUT);
pinMode(pinTrigger, OUTPUT);
pinMode(ledRed, OUTPUT);
pinMode(ledYellow, OUTPUT);
pinMode(ledGreen, OUTPUT);
}
void loop() {
float waterLevel = readUltrasonic();
Serial.println("Batas Ketinggian Air adalah: ");
Serial.println(waterLevel);
if (waterLevel > 150) {
digitalWrite(ledGreen, HIGH);
digitalWrite(ledYellow, LOW);
digitalWrite(ledRed, LOW);
Blynk.virtualWrite(V1, waterLevel);
Blynk.virtualWrite(V2, ledGreen);
}
else {
digitalWrite(ledGreen, LOW);
}
if (waterLevel > 100 && waterLevel <= 158) {
digitalWrite(ledYellow, HIGH);
digitalWrite(ledGreen, LOW);
digitalWrite(ledRed, LOW);
Blynk.virtualWrite(V1, waterLevel);
Blynk.virtualWrite(V3, ledYellow);
}
else {
digitalWrite(ledYellow, LOW);
}
if (waterLevel <= 50) {
digitalWrite(ledRed, HIGH);
digitalWrite(ledGreen, LOW);
digitalWrite(ledYellow, LOW);
Blynk.virtualWrite(V1, waterLevel);
Blynk.virtualWrite(V4, ledRed);
}
else {
digitalWrite(ledRed, LOW);
}
Blynk.run();
}