#include <Servo.h>
#define TRIG 9
#define ECHO 10
#define SERVO 6
#define BUZZER 8
#define LED 13
#define PIR 7
Servo myServo;
void setup() {
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(BUZZER, OUTPUT);
pinMode(LED, OUTPUT);
pinMode(PIR, INPUT);
myServo.attach(SERVO);
Serial.begin(9600);
}
void loop() {
// Measure distance
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long duration = pulseIn(ECHO, HIGH);
int distance = duration * 0.034 / 2;
Serial.println(distance);
// PIR detects hand → Open lid
if (digitalRead(PIR) == HIGH) {
myServo.write(90); // Open lid
delay(2000);
myServo.write(0); // Close lid
}
// If trash full
if (distance < 10) {
digitalWrite(BUZZER, HIGH);
digitalWrite(LED, HIGH);
} else {
digitalWrite(BUZZER, LOW);
digitalWrite(LED, LOW);
}
delay(500);
}