//Created by Irham Azhari Aulia
#include <Servo.h>
// Menyiapkan colokan komponen
int trigPin = 3;
int echoPin = 2;
Servo tutupSampah; // Memberi nama servonya "tutupSampah"
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
tutupSampah.attach(10); // Servo dicolok ke angka 10
tutupSampah.write(0); // Posisi Awal: Tutup tempat sampah TERTUTUP (0 derajat)
Serial.println("Tempat Sampah Pintar SIAP DIGUNAKAN.");
Serial.println("Dekatkan tangan Anda (di bawah 15 cm) untuk membuka.");
}
void loop() {
// 1. Membaca Jarak (Mendeteksi Tangan)
digitalWrite(trigPin, LOW); delayMicroseconds(2);
digitalWrite(trigPin, HIGH); delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
int jarak = duration * 0.034 / 2;
// 2. Logika Buka/Tutup Tempat Sampah
if (jarak > 0 && jarak <= 15) {
// JIKA ADA TANGAN MENDEKAT (Jarak 15 cm atau kurang)
Serial.println("Tangan terdeteksi! Membuka tutup sampah...");
// Motor bergerak 90 derajat untuk membuka tutup sampah
tutupSampah.write(90);
// Tahan posisi terbuka selama 3 detik agar orang bisa buang sampah
delay(3000);
// Setelah 3 detik, tutup kembali
Serial.println("Menutup kembali tempat sampah.");
tutupSampah.write(0);
// Beri jeda 1 detik agar tutup benar-benar rapat sebelum membaca sensor lagi
delay(1000);
} else {
// JIKA TIDAK ADA ORANG (Jarak lebih dari 15 cm)
// Pastikan tutup tetap tertutup rapat
tutupSampah.write(0);
}
delay(100); // Jeda sangat singkat untuk pembacaan sensor
}