#define BLYNK_TEMPLATE_ID "TMPL6JPKSycHm"
#define BLYNK_TEMPLATE_NAME "ULTRASONIK"
#define BLYNK_AUTH_TOKEN "6l1KN0toicw79e2OuZWte9ADD4zsA3vV"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#define trig 2
#define echo 4
#define redLedPin 18 // Pin untuk LED merah
#define yellowLedPin 19 // Pin untuk LED kuning
#define greenLedPin 21 // Pin untuk LED hijau
long duration;
int distance;
// You should get Auth Token in the Blynk App.
char auth[] = "6l1KN0toicw79e2OuZWte9ADD4zsA3vV";
char ssid[] = "Wokwi-GUEST"; // your ssid
char pass[] = ""; // your pass
BlynkTimer timer;
bool redLed = false; // Pin untuk LED merah
bool yellowLed = false; // Pin untuk LED kuning
bool greenLed = false; // Pin untuk LED hijau
void setup()
{
// Debug console
pinMode(trig, OUTPUT); // Sets the trigPin as an Output
pinMode(echo, INPUT); // Sets the echoPin as an Input
pinMode(redLedPin, OUTPUT);
pinMode(yellowLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
// Setup a function to be called every second
timer.setInterval(1000L, sendSensor);
}
void loop()
{
Blynk.run();
timer.run();
}
BLYNK_WRITE(V1) {
redLed= param.asInt();
}
BLYNK_WRITE(V0) {
yellowLed = param.asInt();
}
BLYNK_WRITE(V2) {
greenLed = param.asInt();
}
void sendSensor()
{
digitalWrite(trig, LOW); // Makes trigPin low
delayMicroseconds(2); // 2 micro second delay
digitalWrite(trig, HIGH); // tigPin high
delayMicroseconds(10); // trigPin high for 10 micro seconds
digitalWrite(trig, LOW); // trigPin low
duration = pulseIn(echo, HIGH); //Read echo pin, time in microseconds
distance = duration * 0.0343 / 2; //Calculating actual/real distance
Serial.print("Distance = "); //Output distance on arduino serial monitor
Serial.println(distance);
if (distance < 25) {
digitalWrite(redLedPin, HIGH); // LED merah menyala
Serial.println("Jarak melebihi batas maksimum!");
redLed = true;
digitalWrite(yellowLedPin, LOW); // LED kuning mati
yellowLed = false;
digitalWrite(greenLedPin, LOW); // LED hijau mati
greenLed = false;
} else if (distance > 25 && distance <= 50) {
digitalWrite(redLedPin, LOW); // LED merah mati
redLed = false;
digitalWrite(yellowLedPin, HIGH); // LED kuning menyala
Serial.println("Waspada siaga 1 !!! ");
yellowLed = true;
digitalWrite(greenLedPin, LOW); // LED hijau mati
greenLed = false;
} else if (distance > 50 && distance <= 100){
digitalWrite(redLedPin, LOW); // LED merah mati
redLed = false;
digitalWrite(yellowLedPin, LOW); // LED kuning mati
yellowLed = false;
digitalWrite(greenLedPin, HIGH); // LED hijau menyala
greenLed = true;
} else {
// Mengatur semua LED menjadi mati jika jarak melebihi batas maksimum
digitalWrite(redLedPin, LOW);
redLed = false;
digitalWrite(yellowLedPin, LOW);
yellowLed = false;
digitalWrite(greenLedPin, LOW);
greenLed = false;
}
// Kirim status tombol ke Blynk
Blynk.virtualWrite(V1, redLed);
// Kirim status tombol ke Blynk
Blynk.virtualWrite(V0, yellowLed);
// Kirim status tombol ke Blynk
Blynk.virtualWrite(V2, greenLed);
Blynk.virtualWrite(V4, distance);
delay(1000); //Pause for 3 seconds and start measuring distance again
}