// Menghubungkan pin sensor ultrasonik dan servo
const int triggerPin = 2; // Pin trigger sensor ultrasonik terhubung ke pin digital 2
const int echoPin = 3; // Pin echo sensor ultrasonik terhubung ke pin digital 3
const int servoPin = 9; // Pin servo terhubung ke pin digital 9
const int pirPin = 6;
const int ledPin = 5;
// Jarak minimum untuk membuka tempat sampah (dalam cm)
const int openDistance = 10;
#include <Servo.h>
Servo myservo;
void setup()
{
pinMode(triggerPin, OUTPUT); // Mengatur pin trigger sebagai OUTPUT
pinMode(echoPin, INPUT); // Mengatur pin echo sebagai INPUT
pinMode (pirPin, INPUT);
pinMode(ledPin, OUTPUT);
myservo.attach(servoPin); // Menghubungkan servo dengan pin servoPin
Serial.begin(9600); // Mengaktifkan komunikasi serial untuk pemantauan
// Memberikan waktu kepada sensor PIR untuk memanaskan
delay(10000);
}
void loop()
{
//Program sensor PIR untuk menggerakan motor
int pirState = digitalRead(pirPin); // Membaca status sensor PIR
if (pirState == HIGH) // Jika benda mendekat
{
myservo.write(90); // Menggerakkan servo ke posisi terbuka (90 derajat)
}
else{
myservo.write(-90);
}
//Program sensor ultrasonic untuk menyalakan LED ketika sampah penuh
// Mengirimkan pulsa ultrasonik untuk mendapatkan jarak
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
// Menerima waktu pantulan pulsa dan menghitung jarak
long duration = pulseIn(echoPin, HIGH);
int distance = duration * 0.034 / 2;
if (distance < openDistance) // Jika benda mendekat
{
digitalWrite(ledPin, HIGH); // Menyalakan LED
Serial.println("Sampah Penuh!");
}
else{
digitalWrite(ledPin, LOW);
}
}