#define BLYNK_TEMPLATE_ID "TMPL6msVr6etO"
#define BLYNK_TEMPLATE_NAME "SLIDING GATE IMAM 2311079007"
#define BLYNK_AUTH_TOKEN "MqDOMqRwuUICtU_vbzru1Ji-ZXidkfTi"
#include <WiFi.h>
#include <HTTPClient.h>
#include <Arduino_JSON.h>
#include <ESP32Servo.h>
#define RLED 25
#define GLED 33
#define RLED2 21
#define GLED2 19
#define BUZZER 2
Servo myservo1;
Servo myservo2;
int trigPin = 26;
int echoPin = 27;
int trigPin2 = 5;
int echoPin2 = 18;
long duration, duration2;
int distance, distance2;
unsigned long previousMillis = 0;
const long interval = 2000; //buzzer interval set to 2 secs
const char* ssid = "Wokwi-GUEST";
const char* password = "";
String serverName = "https://sgp1.blynk.cloud/external/api/batch/update?token=MqDOMqRwuUICtU_vbzru1Ji-ZXidkfTi&v0=";
String serverName2 = "https://sgp1.blynk.cloud/external/api/get?token=MqDOMqRwuUICtU_vbzru1Ji-ZXidkfTi&v2";
void setup() {
Serial.begin(115200);
myservo1.attach(14);
myservo2.attach(22);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(RLED, OUTPUT);
pinMode(GLED, OUTPUT);
pinMode(RLED2, OUTPUT);
pinMode(GLED2, OUTPUT);
pinMode(BUZZER, OUTPUT);
WiFi.begin(ssid, password);
Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
}
void loop() {
//initiating left side sensor
distance = checkDistance(trigPin, echoPin);
Serial.print("Jarak gerbang masuk: ");
Serial.print(distance);
Serial.println(" cm");
if (distance >= 0 && distance <= 200) {
myservo1.write(180);
imam(RLED, GLED);
soundBuzzer();
} else {
myservo1.write(0);
imam(RLED, GLED);
}
//initiating right side sensor
distance2 = checkDistance(trigPin2, echoPin2);
Serial.print("Jarak gerbang keluar: ");
Serial.print(distance2);
Serial.println(" cm");
if (distance2 >= 0 && distance2 <= 200) {
myservo2.write(180);
fikri(RLED2, GLED2);
soundBuzzer();
}
else {
myservo2.write(0);
fikri(RLED2, GLED2);
}
//write to blynk
if(WiFi.status()== WL_CONNECTED)
{
HTTPClient http;
String serverPath = serverName + String(distance) + "&v1=" + String(distance2);
http.begin(serverPath);
int httpResponseCode = http.GET();
if (httpResponseCode>0)
{
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
String payload = http.getString();
Serial.println(payload);
}
else
{
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
http.end();
}
else
{
Serial.println("WiFi Disconnected");
}
}
int checkDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
return pulseIn(echoPin, HIGH) * 0.034 / 2;
}
void imam (int whatled1, int whatled2) {
digitalWrite(whatled1, HIGH);
digitalWrite(whatled2, LOW);
}
void fikri (int whatled1, int whatled2) {
digitalWrite(whatled1, HIGH);
digitalWrite(whatled2, LOW);
}
void soundBuzzer() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
digitalWrite(BUZZER, HIGH);
delay(2000);
digitalWrite(BUZZER, LOW);
previousMillis = currentMillis;
}
}