#define BLYNK_TEMPLATE_ID "TMPL6hASXNzMk"
#define BLYNK_TEMPLATE_NAME "kontrol led"
#define BLYNK_AUTH_TOKEN "kDVWlsTz_s4g8f35uroXgxBH95wAHpEu"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <NewPing.h>
const int trigPin = 15; // Pin trigger sensor ultrasonik
const int echoPin = 2; // Pin echo sensor ultrasonik
const int ledPin1 = 17; // Pin LED 1
const int ledPin2 = 5; // Pin LED 2
const int ledPin3 = 18; // Pin LED 3
const int buzzerPin = 22; // Pin buzzer
const int jarak_max = 400;
char auth[] = BLYNK_AUTH_TOKEN; //Token Blynk
char ssid[] = "Wokwi-GUEST"; //Nama WiFi yang digunakan
char pass[] = ""; //Password WiFi
//Change the virtual pins according the rooms
#define led1_vpin V17
#define led2_vpin V5
#define led3_vpin V18
#define sensor_vpin V0
#define button1_vpin V22
WidgetLED led1(led1_vpin);
WidgetLED led2(led2_vpin);
WidgetLED led3(led3_vpin);
NewPing sonar1(trigPin, echoPin, jarak_max);
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(buzzerPin, OUTPUT);
// Matikan semua LED dan buzzer saat inisialisasi
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(buzzerPin, LOW);
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
}
void loop() {
Blynk.run(); // Tambahkan ini untuk menjaga koneksi dengan server Blynk
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
Blynk.virtualWrite(V0,distance);
// Logika untuk mengatur LED dan buzzer sesuai dengan jarak
if (distance > 300) {
activateLED(0);
Blynk.virtualWrite(V4, "1");
} else if (distance > 200) {
activateLED(1);
Blynk.virtualWrite(V3,"Hijau menyala");
} else if (distance > 50) {
activateLED(2);
Blynk.virtualWrite(V2,"Biru Menyala");
} else {
activateLED(3);
activateBuzzer();
Blynk.virtualWrite(V1,"");
}
delay(500);
}
void activateLED(int numLEDs) {
digitalWrite(ledPin1, numLEDs >= 1 ? HIGH : LOW);
digitalWrite(ledPin2, numLEDs >= 2 ? HIGH : LOW);
digitalWrite(ledPin3, numLEDs >= 3 ? HIGH : LOW);
}
void activateBuzzer() {
tone(buzzerPin, 1000); // Frekuensi buzzer
delay(500); // Durasi bunyi buzzer
noTone(buzzerPin); // Matikan buzzer
}