//SEVIA USMAN
//7C
//203510383
//dapat diambil dari blynk yang sudah dibuat copy lalu masukkan
#define BLYNK_TEMPLATE_ID "TMPL6XADmvqZ8"
#define BLYNK_TEMPLATE_NAME "UASLABIOT"
#define BLYNK_AUTH_TOKEN "IaUbPdd-sZK_mE5A4m1T4MM_f88ZoVfc"
#define BLYNK_PRINT Serial //agar bisa tersambung antara wokwi dan blynk
//memasukkan include library yanng sudah dimasukkan pada library manager
#include <WiFi.h>
#include <WiFiClient.h>
#include <ArduinoJson.h>
#include <BlynkSimpleEsp32.h>
//mendefinisikan fungsi dari perangkat atau sensor seperti buzzer,LED dan ultrasonik
#define Echo 15
#define Trig 2
#define Merah 14
#define Kuning 12
#define Hijau 13
#define buzzer 26
//mengintefikasi autentikasi pada (auth,ssid dan pass)
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;//agar sama dan terhubung pada blynk
//definsi variabel jarak dan nada
float jarak = 0; //set awal jarak = 0
int nada; //variabel nada untuk mengubah intonasi nada pada buzzer
void ukur_jarak(){ //untuk operasi pengukuran jarak
digitalWrite(Trig, LOW);
delay(10);
digitalWrite(Trig, HIGH);
delay(10);
digitalWrite(Trig, LOW);
int duration = pulseIn(Echo, HIGH); //untuk membuat durasi antara ultrasonik dengan blynk nilai nya sama
jarak = duration * 0.034 / 2 + 1;
Serial.print("Jarak: ");
Serial.print(jarak);
Serial.println(" cm"); //output jarak (cm)
}
void output_jarak(){
if(jarak > 400) { //jika pada ultrasonik jarak nya lebih 400 maka output akan aman
Serial.println("Aman");
digitalWrite(Hijau, HIGH);//dengan lampu yang menyala hijau
}
else if(jarak > 200 && jarak < 400) {//jika jarak lebih dari 200 dan kurang dari 400 akan menghasilkan output "jangan mendekat"
Serial.println("Hama Mendekat!");
digitalWrite(Kuning, HIGH);//dengan lampu yang menyala kuning
}
else if(jarak < 200) {//jika jarak kurang dari 200 maka output akan keluar "ada hama"
Serial.println("Ada Hama");
digitalWrite(Merah, HIGH);//dengan lampu yang menyala merah
}
if(jarak < 200) {
tone(buzzer, nada); //nada atau bunyi untuk buzzer apabila jarak kurang dari 200
}
else {
noTone(buzzer);
}
}
BLYNK_WRITE(V4) {
nada = param.asInt();//nada/tone untuk buzzer
}
void kirim_blynk(){
Blynk.virtualWrite(V0, jarak);
if(jarak > 400) { //jika jarak lebih dari 400 maka lampu hijau akan menyala
Blynk.virtualWrite(V1, 1);
Blynk.virtualWrite(V2, 0);
Blynk.virtualWrite(V3, 0);
}
else if(jarak >= 200 && jarak <= 400) { //jika jarak hama lebih dari 200 dan kurang dari 200 maka lampu kuning akan menyala
Blynk.virtualWrite(V1, 0);
Blynk.virtualWrite(V2, 1);
Blynk.virtualWrite(V3, 0);
}
else if(jarak < 200) { //dan jika jarak hama kurang dari 200 maka lampu merah akan menyala
Blynk.virtualWrite(V1, 0);
Blynk.virtualWrite(V2, 0);
Blynk.virtualWrite(V3, 1);
}
Blynk.virtualWrite(V4, nada);//membaca virtual untuk bagian nada
}
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
pinMode(Merah, OUTPUT);
pinMode(Hijau, OUTPUT);
pinMode(buzzer, OUTPUT);
timer.setInterval(2000L, kirim_blynk);
}
void loop() {
digitalWrite(Merah, LOW);
digitalWrite(Kuning, LOW);
digitalWrite(Hijau, LOW);
ukur_jarak();//memanggil variabel ukur jarak
output_jarak(); //memanggil ouput jarak
//blynk dan timer untuk di run
Blynk.run();
timer.run();
delay(1000);
}