#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL61r603mvX"
#define BLYNK_TEMPLATE_NAME "ESP32 Kedalaman Air"
#define BLYNK_AUTH_TOKEN "ux3kJPYGjHRvzecEM1bYnIWEBsPmme86"
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#include <WiFi.h>
#include <Wire.h>
#include <BlynkSimpleEsp32.h>
#define echoPin 4
#define trigPin 2
#define redLed 27
#define yellowLed 12
#define greenLed 13
BlynkTimer timer;
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
pinMode(redLed, OUTPUT);
pinMode(yellowLed, OUTPUT);
pinMode(greenLed, OUTPUT);
timer.setInterval(1000L, sendSensorData); // Mengirim data setiap 1 detik
}
void sendSensorData() {
float distance = ultrasonic();
Blynk.virtualWrite(V3, distance); // Mengirim data sensor ultrasonik ke label V3 di aplikasi Blynk
if (distance > 150) {
digitalWrite(greenLed, HIGH);
digitalWrite(yellowLed, LOW);
digitalWrite(redLed, LOW);
Blynk.virtualWrite(V2, 255); // Mengatur lampu hijau ke nilai maksimum (nyala)
Blynk.virtualWrite(V1, 0); // Mengatur lampu kuning ke nilai minimum (mati)
Blynk.virtualWrite(V0, 0); // Mengatur lampu merah ke nilai minimum (mati)
} else if (distance <= 150 && distance > 100) {
digitalWrite(greenLed, LOW);
digitalWrite(yellowLed, HIGH);
digitalWrite(redLed, LOW);
Blynk.virtualWrite(V2, 0); // Mengatur lampu hijau ke nilai minimum (mati)
Blynk.virtualWrite(V1, 255); // Mengatur lampu kuning ke nilai maksimum (nyala)
Blynk.virtualWrite(V0, 0); // Mengatur lampu merah ke nilai minimum (mati)
} else if (distance <= 100) {
digitalWrite(greenLed, LOW);
digitalWrite(yellowLed, LOW);
digitalWrite(redLed, HIGH);
Blynk.virtualWrite(V2, 0); // Mengatur lampu hijau ke nilai minimum (mati)
Blynk.virtualWrite(V1, 0); // Mengatur lampu kuning ke nilai minimum (mati)
Blynk.virtualWrite(V0, 255); // Mengatur lampu merah ke nilai maksimum (nyala)
}
}
float ultrasonic() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
int DoR = pulseIn(echoPin, HIGH);
return DoR * 0.034 / 2;
}
void loop() {
Blynk.run();
timer.run();
}