#include <NewPing.h> //memanggil library ultrasonic
// Pin untuk sensor ultrasonik
#define TRIGGER_PIN 4 // Pin trigger dihubungkan ke pin 4 ESP32
#define ECHO_PIN 5 // Pin echo dihubungkan ke pin 5 ESP32
// Pin untuk servo motor dan buzzer
#define SERVO_PIN 14 // Pin servo dihubungkan ke pin 14 ESP32
#define BUZZER_PIN 15 // Pin buzzer dihubungkan ke pin 15 ESP32
#define MAX_DISTANCE 200 // Batas jarak dari sensor
#define KAPASITAS_TONG_PENUH 90 // Kapasitas tong sampah yang dianggap penuh, disesuaikan dengan kebutuhan
// Inisialisasi objek untuk sensor ultrasonik
NewPing ultrasonic(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() {
Serial.begin(9600);
// Set pin servo dan buzzer sebagai output
pinMode(SERVO_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
}
void loop() {
// Baca jarak dari sensor ultrasonik
int distance = ultrasonic.ping_cm();
// Tampilkan jarak ke serial monitor
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
// Jika ada objek mendekati, dan tong belum penuh, buka tutup tong sampah dan beri suara
if (distance <= 10 && distance >= 0) {
Serial.println("Tong sampah sedang dibuka...");
bukaTongSampah();
beriSuara();
delay(4000); // Durasi bukaan tong sampah
}
// Jika tong penuh, beri suara
else if (distance > 10 && distance < KAPASITAS_TONG_PENUH) {
Serial.println("Tong sampah penuh!");
beriSuara();
delay(2000); // Durasi suara buzzer
}
// Jika tidak ada objek mendekati atau tong tidak penuh, tutup tong sampah
else {
Serial.println("Tong sampah tertutup.");
tutupTongSampah();
}
}
// Fungsi untuk membuka tong sampah (posisi servo 180 derajat)
void bukaTongSampah() {
digitalWrite(SERVO_PIN, HIGH);
delay(1000); // Delay untuk memastikan servo mencapai posisi
}
// Fungsi untuk menutup tong sampah (posisi servo 0 derajat)
void tutupTongSampah() {
digitalWrite(SERVO_PIN, LOW);
delay(1000); // Delay untuk memastikan servo mencapai posisi
}
// Fungsi untuk memberi suara (menggunakan buzzer)
void beriSuara() {
tone(BUZZER_PIN, 1000); // Bunyikan buzzer dengan frekuensi 1000Hz
delay(1000); // Durasi suara
noTone(BUZZER_PIN); // Berhenti bunyikan buzzer
}