#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPLHmvYNU7B"
#define BLYNK_DEVICE_NAME "sensor ultrasonic"
#define BLYNK_AUTH_TOKEN "TQw3OxuGqLs3a6HwOiK066WTFBMOkzYK"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
const int trigPin = 19;
const int echoPin = 18;
//define sound speed in cm/uS
#define SOUND_SPEED 0.034
long duration;
float distanceCm;
String keadaan;
int lampu;
void sendSensor()
{
String distanceCmStr = String(distanceCm);
Blynk.virtualWrite(V1, distanceCmStr); // select your virtual pins accordingly
Blynk.virtualWrite(V2, keadaan); // select your virtual pins accordingly
Blynk.virtualWrite(V3, lampu);
Serial.println(keadaan);
}
void setup()
{
// Debug console
Serial.begin(115200);
delay(1000);
Blynk.begin(auth, ssid, pass);
// You can also specify server:
//Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 80);
//Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080);
// Setup a function to be called every second
timer.setInterval(1000L, sendSensor);
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
}
void loop()
{
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculate the distance
distanceCm = duration * SOUND_SPEED / 2;
// Prints the distance in the Serial Monitor
Serial.print("Distance (cm): ");
Serial.println(distanceCm);
if (distanceCm > 200)
{
keadaan = "kosong";
lampu = 0;
}
else
{
keadaan = "isi";
lampu = 1;
}
delay(1000);
Blynk.run();
timer.run();
}