#define BLYNK_TEMPLATE_ID "TMPL6aoFKveoR"
#define BLYNK_TEMPLATE_NAME "monitoring distance"
#define BLYNK_AUTH_TOKEN "MSYuPEtHQkRhZuvyJZE4iakawGHee_4b"
#define BLYNK_PRINT Serial
#include "Ultrasonic.h"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
Ultrasonic ultrasonic(18, 19);
int buzzerPin = 13;
int ledPin = 14;
int switcher = 0;
int octaveBuzz = 0;
// from blynk device to wokwi peripheral
BLYNK_WRITE(V0)
{
octaveBuzz = param.asInt();
}
BLYNK_WRITE(V3)
{
int pinSwitch = param.asInt();
Serial.println(pinSwitch);
if (pinSwitch==1){
switcher = 1;
}else{
switcher = 0;
}
}
void myTone(int pin)
{
ledcAttachPin(pin, 0); // pin, channel
ledcWriteNote(0, NOTE_F, octaveBuzz); // channel, frequency, octave
}
void myNoTone(int pin)
{
ledcDetachPin(pin);
}
void mainSensor(){
// input
int distance = ultrasonic.read(CM);
// main conditional
if (distance <= 200) {
if (switcher==0){
delay(1000);
myTone(buzzerPin);
digitalWrite(ledPin, HIGH);
Blynk.virtualWrite(V1, 1);
}else{
delay(1000);
myNoTone(buzzerPin);
digitalWrite(ledPin, LOW);
Blynk.virtualWrite(V1, 0);
}
}else{
delay(1000);
myNoTone(buzzerPin);
digitalWrite(ledPin, LOW);
Blynk.virtualWrite(V1, 0);
}
// from wokwi peripheral to blynk device
Blynk.virtualWrite(V2, distance);
// debugging
Serial.print("Jarak: ");
Serial.println(distance);
Serial.print("on/off: ");
Serial.println(switcher);
Serial.print("Octave: ");
Serial.println(octaveBuzz);
}
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
Blynk.begin(auth, ssid, pass);
timer.setInterval(2500L, mainSensor);
}
void loop() {
delay(1000);
mainSensor();
Blynk.run();
timer.run();
}