#define BLYNK_TEMPLATE_ID "TMPL65e3DgPIu"
#define BLYNK_TEMPLATE_NAME "smartbin"
#define BLYNK_AUTH_TOKEN "7cWbygn04BPh7EV5lrx4KFG90a1YpJmW"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <ESP32Servo.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define TRIG_PIN 5
#define ECHO_PIN 18
#define LED_PIN 2
#define SERVO_PIN 32
Servo servo;
long duration;
int distance;
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
servo.attach(SERVO_PIN);
servo.write(90); // tutup awal
WiFi.begin(ssid, pass);
Serial.print("Connecting WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi Connected");
Blynk.begin(auth, ssid, pass);
Serial.println("Blynk Connected");
}
void loop() {
Blynk.run();
// Trigger ultrasonic
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.println(distance);
// Jika tangan dekat <= 50 cm
if (distance <= 50 && distance > 0) {
servo.write(0); // buka
digitalWrite(LED_PIN, HIGH);
Blynk.virtualWrite(V1, "Tempat Sampah Terbuka");
} else {
servo.write(90); // tutup
digitalWrite(LED_PIN, LOW);
Blynk.virtualWrite(V1, "Tempat Sampah Tertutup");
}
Blynk.virtualWrite(V0, distance);
delay(300);
}