#define BLYNK_TEMPLATE_ID "TMPL6aNtrrvgW"
#define BLYNK_TEMPLATE_NAME "IOT Pendeteksi Hama"
#define BLYNK_AUTH_TOKEN "rv9dROiZsPjQeVMqqjlv6qPOV2E3b_RA"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <Ultrasonic.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
Ultrasonic ultrasonic(2, 15);
int merah = 14;
int hijau = 13;
int buzzer = 26;
float jarak = 0;
int switchBuzz = 0;
void myTone(int pin){
ledcAttachPin(pin, 0);
ledcWriteNote(0, NOTE_F, 8);
}
void myNoTone(int pin){
ledcDetachPin(pin);
}
BLYNK_WRITE(V3){
int pin_value = param.asInt();
Serial.println(pin_value);
if (pin_value == 1){
switchBuzz = 1;
}else {
switchBuzz = 0;
}
}
void sendSensor(){
delay(1000);
double jarak = ultrasonic.read(CM);
Blynk.virtualWrite(V0, jarak);
Serial.print("Jarak : ");
Serial.print(jarak);
Serial.println("Cm");
if(jarak < 200){
if(switchBuzz == 1){
digitalWrite(merah, HIGH);
digitalWrite(hijau, LOW);
Serial.println("Hama terdeteksi pada radius 2 Meter!");
Blynk.virtualWrite(V1, 0);
Blynk.virtualWrite(V2, 1);
myTone(buzzer);
Blynk.logEvent("Warning!", "Peringatan Hama terdeteksi pada radius 2 Meter!");
}else{
digitalWrite(merah, LOW);
digitalWrite(hijau, LOW);
Serial.println(("Alarm dan Notifikasi dimatikan."));
Blynk.virtualWrite(V1, 0);
Blynk.virtualWrite(V2, 0);
myNoTone(buzzer);
}
}else{
digitalWrite(merah, LOW);
digitalWrite(hijau, HIGH);
Serial.println(("Tidak ada Hama yang Terdeteksi."));
Blynk.virtualWrite(V1, 1);
Blynk.virtualWrite(V2, 0);
myNoTone(buzzer);
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(merah, OUTPUT);
pinMode(hijau, OUTPUT);
pinMode(buzzer, OUTPUT);
delay(1000);
Blynk.begin(auth, ssid, pass);
timer.setInterval(2500L, sendSensor);
}
void loop() {
// put your main code here, to run repeatedly:
delay(500); // this speeds up the simulation
Blynk.run();
sendSensor();
timer.run();
}