#include <Servo.
h>
Servo myServo;
const int trigPin = 5;
const int echoPin = 6;
const int buzzerPin = 11;
const int ledPin = LED_BUILTIN;
const int servoPosClosed = 0; // Posisi tertutup servo
const int servoPosOpen = 90; // Posisi terbuka servo
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
myServo.attach(10); // Menghubungkan servo ke pin 6
myServo.write(servoPosClosed); // Menutup tutup saat memulai
Serial.begin(9600);
}
void loop() {
long duration, distance;
// Mengirimkan sinyal ultrasonik
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Menerima sinyal pantulan
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1; // Menghitung jarak dalam cm
// Jika objek terdeteksi dalam jarak 20 cm
if (distance <= 20) {
digitalWrite(ledPin, HIGH); // Menghidupkan LED
digitalWrite(buzzerPin, HIGH); // Menghidupkan buzzer
myServo.write(servoPosOpen); // Membuka tutup
delay(5000); // Menunggu selama 5 detik
myServo.write(servoPosClosed); // Menutup kembali tutup
digitalWrite(buzzerPin, LOW); // Mematikan buzzer
digitalWrite(ledPin, LOW); // Mematikan LED
} else {
myServo.write(servoPosClosed); // Pastikan tutup tetap tertutup
}
delay(100); // Menunggu sebentar sebelum mengulangi loop