#define BLYNK_TEMPLATE_ID "TMPL6IlVbMT-c"
#define BLYNK_TEMPLATE_NAME "Sistem Pemantau Jarak"
#define BLYNK_AUTH_TOKEN "tEcKTrQNYzZwit_Clc1tfEtbVeQp58XB"
#include <Blynk.h>
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
char ssid[]="Wokwi-GUEST";
char pass[]="";
char auth[]=BLYNK_AUTH_TOKEN;
const int trigPin = 22; //menentukan trigPin sensor ultrasonik
const int echoPin = 23; //menentukan echoPin sensor ultrasonik
const int LDRpin = 14; //menentukan pin untuk sensor LDR
const int buzzerPin = 4; //menentukan pin untuk buzzer
const int lampuPin = 26; //menentukan pin untuk lampu
void setup() {
Serial.begin(115200);
Blynk.begin(auth,ssid,pass);
pinMode(trigPin, OUTPUT); //menentukan trigPin sensor ultrasonik sebagai output
pinMode(echoPin, INPUT); //menentukan echoPin sensor ultrasonik sebagai input
pinMode(buzzerPin, OUTPUT); //menentukan buzzerPin sebagai output
pinMode(LDRpin, INPUT); //menentukan LDRpin sebagai input
pinMode(lampuPin, OUTPUT); //menentukan lampuPin sebagai output
}
void loop() {
Blynk.run();
ultrasonik(); //Memanggil fungsi ultrasonik
LDRsensor(); //Memanggil fungsi LDRsensor
}
//Fungsi pembacaan sensor ultrasonik
void ultrasonik(){
//Membaca data dari sensor ultrasonik
long durasi,jarak;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); //trigPin hidup untuk mendeteksi ada benda atau tidak
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
durasi = pulseIn(echoPin, HIGH);
jarak = (durasi/2) / 29.1;
Serial.print("Jarak benda: ");
Serial.print(jarak);
Serial.println(" cm");
Blynk.virtualWrite(V0,jarak); //mengirim data jarak ke blynk
//Kondisi buzzer berbunyi atau tidak
if (jarak < 25) {
digitalWrite(buzzerPin,HIGH);
Serial.println("Buzzer menyala, karena jarak benda terlalu dekat dengan tembok");
}
else {
digitalWrite(buzzerPin,LOW);
Serial.println("Buzzer mati, karena jarak benda jauh dengan tembok");
}
delay(1000);
}
//Fungsi pembacaan sensor LDR
void LDRsensor(){
//Membaca data dari sensor LDR
int bacaLDR = analogRead(LDRpin);
Serial.print("Nilai LDR: ");
Serial.print(bacaLDR);
Serial.println("");
Blynk.virtualWrite(V1,bacaLDR); //mengirim data bacaLDR ke blynk
//Kondisi lampu otomatis
if (bacaLDR < 1000){
digitalWrite(lampuPin, HIGH); //lampu akan menyala
Serial.println("Keadaan gelap, lampu menyala");
}
else{
digitalWrite(lampuPin, LOW); //lampu akan mati
Serial.println("Keadaan terang, lampu mati");
}
delay(1000);
}