#include <WiFi.h>
#include <WiFiClient.h>
#include <ThingSpeak.h>
#include <BlynkSimpleEsp32.h>
char ssid[] = "pto"; // Your Wi-Fi network name
char pass[] = ""; // Your Wi-Fi password
const char *thingSpeakApiKey = "K896BZRETYQY124W";
const char *thingSpeakChannelID = "2320590";
int duration1 = 0;
int distance1 = 0;
int duration2 = 0;
int distance2 = 0;
#define LED 2
#define PIN_TRIG1 15
#define PIN_ECHO1 14
#define PIN_TRIG2 13
#define PIN_ECHO2 12
BlynkTimer timer;
WiFiClient client;
char auth[] = "Your_Blynk_Auth_Token";
const char *blynkServer = "blynk.cloud";
const int blynkPort = 8080;
int entered = 0;
int left = 0;
int inside = 0;
void setup() {
Serial.begin(115200);
// Connect to Wi-Fi
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// Initialize ThingSpeak
ThingSpeak.begin(client);
// Initialize Blynk
Blynk.begin(auth, blynkServer, blynkPort);
pinMode(LED, OUTPUT);
pinMode(PIN_TRIG1, OUTPUT);
pinMode(PIN_ECHO1, INPUT);
pinMode(PIN_TRIG2, OUTPUT);
pinMode(PIN_ECHO2, INPUT);
timer.setInterval(1000L, myTimer);
}
void loop() {
Blynk.run();
timer.run();
// Calculate distance1 and distance2 here
duration1 = get_distance1();
duration2 = get_distance2();
// Send data to ThingSpeak
ThingSpeak.writeField(thingSpeakChannelID, 1, distance1, thingSpeakApiKey);
ThingSpeak.writeField(thingSpeakChannelID, 2, distance2, thingSpeakApiKey);
// Delay for sending data to ThingSpeak
delay(15000);
}
long get_distance1() {
// Start a new measurement:
digitalWrite(PIN_TRIG1, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG1, LOW);
// Read the result:
duration1 = pulseIn(PIN_ECHO1, HIGH);
distance1 = duration1 / 58;
return distance1;
}
// Measure distance from sensor 1 and return the distance in centimeters
// ...
long get_distance2() {
digitalWrite(PIN_TRIG2, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG2, LOW);
// Read the result:
duration2 = pulseIn(PIN_ECHO2, HIGH);
distance2 = duration2 / 58;
return distance2;
}// Measure distance from sensor 2 and return the distance in centimeters
// ...
return distance2;
}
void myTimer() {
Serial.println("100");
int dis_new1 = get_distance1();
int dis_new2 = get_distance2();
if (distance1 != dis_new1 || distance2 != dis_new2) {
Serial.println("200");
if (distance1 < distance2) {
Serial.println("Enter loop");
entered = entered + 1;
inside = inside + 1;
digitalWrite(LED, HIGH);
Blynk.virtualWrite(V0, entered);
Blynk.virtualWrite(V2, inside);
distance1 = dis_new1;
delay(1000);
digitalWrite(LED, LOW);
}
if (distance1 > distance2) {
Serial.println("Leave loop");
left = left + 1;
inside = inside - 1;
Blynk.virtualWrite(V1, left);
Blynk.virtualWrite(V2, inside);
distance2 = dis_new2;
delay(1000);
}
}
}