/// Blynk Template Info
#define BLYNK_TEMPLATE_ID "TMPLelH8pItB"
#define BLYNK_TEMPLATE_NAME "1025queen"
#define BLYNK_AUTH_TOKEN "_vON8XTgvqS_A0xRPcPRnmTdFSjA48iu"
#define BLYNK_PRINT Serial
#include <BlynkSimpleEsp32.h>
/// Wi-Fi Configuration
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
/// Ultrasonic Sensor Pins
#define TRIG_PIN_1 2
#define ECHO_PIN_1 4
#define TRIG_PIN_2 5
#define ECHO_PIN_2 18
#define TRIG_PIN_3 19
#define ECHO_PIN_3 21
#define TRIG_PIN_4 22
#define ECHO_PIN_4 23
void setup() {
  Serial.begin(115200);
  pinMode(TRIG_PIN_1, OUTPUT);
  pinMode(ECHO_PIN_1, INPUT);
  pinMode(TRIG_PIN_2, OUTPUT);
  pinMode(ECHO_PIN_2, INPUT);
  pinMode(TRIG_PIN_3, OUTPUT);
  pinMode(ECHO_PIN_3, INPUT);
  pinMode(TRIG_PIN_4, OUTPUT);
  pinMode(ECHO_PIN_4, INPUT);
  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}
float readDistance(int trigPin, int echoPin) {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  float duration = pulseIn(echoPin, HIGH);
  float distance = (duration * 0.0343) / 2; // Calculate distance in cm
  return distance;
}
void loop() {
  //Blynk.run();
  float distance1 = readDistance(TRIG_PIN_1, ECHO_PIN_1);
  float distance2 = readDistance(TRIG_PIN_2, ECHO_PIN_2);
  float distance3 = readDistance(TRIG_PIN_3, ECHO_PIN_3);
  float distance4 = readDistance(TRIG_PIN_4, ECHO_PIN_4);
  float avgDistance = (distance1 + distance2 + distance3 + distance4) / 4.0;
  Serial.println(avgDistance);
  int ContainInPercent = map(avgDistance, 0, 400, 100, 0);
  Serial.println(ContainInPercent);
  Blynk.virtualWrite(V0, ContainInPercent); // Send average distance to Blynk
  delay(1000);
}