#define BLYNK_TEMPLATE_ID "TMPL3iiBvCoH8"
#define BLYNK_TEMPLATE_NAME "Blynk Smart Dustbins"
#define BLYNK_AUTH_TOKEN "j39sWLDZbLeIl4nmIPb7RcIXxczl1EYr"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
#define echoPin1 32
#define trigPin1 33
#define echoPin2 25
#define trigPin2 26
#define echoPin3 14
#define trigPin3 12
#define echoPin4 27
#define trigPin4 13
#define echoPin5 4
#define trigPin5 15
long duration1, duration2, duration3, duration4, duration5;
int distance1, distance2, distance3, distance4, distance5;
void ultrasonic()
{
// Maximum distance for each bin
int maxDistance = 400;
// Ultrasonic sensor 1
digitalWrite(trigPin1, LOW);
delayMicroseconds(2);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin1, LOW);
duration1 = pulseIn(echoPin1, HIGH);
distance1 = duration1 * 0.034 / 2;
int percentage1 = (distance1 * 100) / maxDistance;
Blynk.virtualWrite(V0, percentage1);
// Ultrasonic sensor 2
digitalWrite(trigPin2, LOW);
delayMicroseconds(2);
digitalWrite(trigPin2, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin2, LOW);
duration2 = pulseIn(echoPin2, HIGH);
distance2 = duration2 * 0.034 / 2;
int percentage2 = (distance2 * 100) / maxDistance;
Blynk.virtualWrite(V1, percentage2);
// Ultrasonic sensor 3
digitalWrite(trigPin3, LOW);
delayMicroseconds(2);
digitalWrite(trigPin3, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin3, LOW);
duration3 = pulseIn(echoPin3, HIGH);
distance3 = duration3 * 0.034 / 2;
int percentage3 = (distance3 * 100) / maxDistance;
Blynk.virtualWrite(V2, percentage3);
// Ultrasonic sensor 4
digitalWrite(trigPin4, LOW);
delayMicroseconds(2);
digitalWrite(trigPin4, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin4, LOW);
duration4 = pulseIn(echoPin4, HIGH);
distance4 = duration4 * 0.034 / 2;
int percentage4 = (distance4 * 100) / maxDistance;
Blynk.virtualWrite(V3, percentage4);
// Ultrasonic sensor 5
digitalWrite(trigPin5, LOW);
delayMicroseconds(2);
digitalWrite(trigPin5, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin5, LOW);
duration5 = pulseIn(echoPin5, HIGH);
distance5 = duration5 * 0.034 / 2;
int percentage5 = (distance5 * 100) / maxDistance;
Blynk.virtualWrite(V4, percentage5);
}
void setup()
{
Serial.begin(9600);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(trigPin3, OUTPUT);
pinMode(echoPin3, INPUT);
pinMode(trigPin4, OUTPUT);
pinMode(echoPin4, INPUT);
pinMode(trigPin5, OUTPUT);
pinMode(echoPin5, INPUT);
Blynk.begin(auth, ssid, pass);
delay(2000);
timer.setInterval(1000L, ultrasonic);
}
void loop()
{
Blynk.run();
timer.run();
}