#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include "Ultrasonic.h"
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
Ultrasonic ultrasonic(16, 4);
BlynkTimer timer;
int buzzerPin = 12;
int switchBuzz = 0;
int suara, suaraPin;
void myTone(int pin, int pin2) {
ledcAttachPin(pin, 0);
ledcWriteNote(0, NOTE_F, pin2);
}
void myNoTone(int pin) {
ledcDetachPin(pin);
}
BLYNK_WRITE(V1) {
int pinData = param.asInt();
Serial.println(pinData);
if (pinData == 1) {
switchBuzz = 1;
} else {
switchBuzz = 0;
}
}
BLYNK_WRITE(V2) {
if (switchBuzz == 0) {
suara = param.asInt();
switch (suara) {
case 1:
suaraPin = 1;
break;
case 2:
suaraPin = 2;
break;
case 3:
suaraPin = 3;
break;
case 4:
suaraPin = 4;
break;
case 5:
suaraPin = 5;
break;
case 6:
suaraPin = 6;
break;
case 7:
suaraPin = 7;
break;
case 8:
suaraPin = 8;
break;
default:
suaraPin = 0;
break;
}
} else {
myNoTone(buzzerPin);
}
}
void setup() {
// Debug console
Serial.begin(115200);
pinMode(buzzerPin, OUTPUT);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
timer.setInterval(1000L, sendSensor);
}
void loop() {
delay(100);
sendSensor();
Blynk.run();
timer.run();
}
void sendSensor() {
double d = ultrasonic.read(CM);
if (isnan(d)) {
Serial.println("Failed to read from Ultrasonic sensor!");
return;
}
if (d < 200) {
Blynk.logEvent("Notif");
if (switchBuzz == 0) {
delay(1000);
switch (suaraPin) {
case 1:
myTone(buzzerPin, 1);
break;
case 2:
myTone(buzzerPin, 2);
break;
case 3:
myTone(buzzerPin, 3);
break;
case 4:
myTone(buzzerPin, 4);
break;
case 5:
myTone(buzzerPin, 5);
break;
case 6:
myTone(buzzerPin, 6);
break;
case 7:
myTone(buzzerPin, 7);
break;
case 8:
myTone(buzzerPin, 8);
break;
default:
myTone(buzzerPin, 0);
break;
}
} else {
delay(1000);
myNoTone(buzzerPin);
}
Blynk.virtualWrite(V0, d);
Serial.println(" Jarak : ");
Serial.print(d);
}
}