#include <ESP32Servo.h>
#include <NewPing.h> // Library for ultrasonic sensor
#define BLYNK_TEMPLATE_ID "TMPL6cJYl_Mej"
#define BLYNK_TEMPLATE_NAME "PALANG OTOMATIS"
#define BLYNK_AUTH_TOKEN "Y1JRh2ejKCzF5fb20g1hl3VwJKeHZ0cK"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
const int TRIGGER_PIN = 15; // Ultrasonic sensor trigger pin
const int ECHO_PIN = 2; // Ultrasonic sensor echo pin
const int BUZZER_PIN = 13; // Buzzer pin
const int SERVO_PIN_1 = 25; // Servo 1 pin
const int SERVO_PIN_2 = 26; // Servo 2 pin
const int LED_PIN_1 = V0; // LED pin for servo 1 in Blynk
const int LED_PIN_2 = V1; // LED pin for servo 2 in Blynk
#define MAX_DISTANCE 400 // Maximum distance in centimeters
Servo Palang1;
Servo Palang2;
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing instance for ultrasonic sensor
bool prevPalang1Open = false;
bool prevPalang2Open = false;
void setup()
{
Serial.begin(115200);
Palang1.attach(SERVO_PIN_1);
Palang2.attach(SERVO_PIN_2);
Blynk.begin(auth, ssid, pass);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_PIN_1, OUTPUT);
pinMode(LED_PIN_2, OUTPUT);
}
void loop()
{
Blynk.run();
int distance = sonar.ping_cm(); // Get distance from ultrasonic sensor in centimeters
if (distance >= 100) // If object detected within or at 100 cm
{
digitalWrite(BUZZER_PIN, HIGH); // Activate buzzer
delay(1000); // Wait for 1 second
digitalWrite(BUZZER_PIN, LOW); // Turn off buzzer
if (!prevPalang1Open)
{
Palang1.write(180); // Open 1
prevPalang1Open = true;
Blynk.virtualWrite(LED_PIN_1, 255); // Turn on LED for 1 in Blynk
}
if (!prevPalang2Open)
{
Palang2.write(180); // Open 2
prevPalang2Open = true;
Blynk.virtualWrite(LED_PIN_2, 255); // Turn on LED for 2 in Blynk
}
}
else // If no object detected or object detected beyond 100 cm
{
if (prevPalang1Open)
{
Palang1.write(0); // Close 1
prevPalang1Open = false;
Blynk.virtualWrite(LED_PIN_1, 0); // Turn off LED for 1 in Blynk
}
if (prevPalang2Open)
{
Palang2.write(0); // Close 2
prevPalang2Open = false;
Blynk.virtualWrite(LED_PIN_2, 0); // Turn off LED for 2 in Blynk
}
}
}