#include <Servo.h>
Servo servoMotor;
// Pin konfigurasi
const int trigPin = 2; // Pin untuk Trigger Sensor Ultrasonik
const int echoPin = 3; // Pin untuk Echo Sensor Ultrasonik
const int buzzerPin = 10; // Pin untuk Buzzer
// Variabel untuk menghitung jarak
long duration;
int distance;
void setup() {
// Menginisialisasi pin
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
// Inisialisasi Servo Motor
servoMotor.attach(9); // Pin D9 untuk Servo Motor
servoMotor.write(0); // Pintu garasi tertutup pada posisi awal
// Memulai komunikasi serial untuk debug
Serial.begin(9600);
}
void loop() {
// Mengukur jarak dengan sensor ultrasonik
digitalWrite(trigPin, LOW); // Pastikan Trigger dalam keadaan rendah
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // Mengirimkan sinyal ultrasonik
delayMicroseconds(10);
digitalWrite(trigPin, LOW); // Mengakhiri sinyal
// Mengukur durasi sinyal pantulan
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2; // Menghitung jarak berdasarkan durasi
// Debug untuk melihat hasil jarak pada serial monitor
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
// Jika jarak < 20 cm (kendaraan terdeteksi)
if (distance < 20) {
// Menyalakan buzzer
digitalWrite(buzzerPin, HIGH); // Buzzer berbunyi
delay(1000); // Buzzer berbunyi selama 1 detik
digitalWrite(buzzerPin, LOW); // Mematikan buzzer
// Menggerakkan servo untuk membuka pintu
servoMotor.write(90); // Membuka pintu (90 derajat)
delay(5000); // Menunggu 5 detik agar pintu tetap terbuka
// Menutup kembali pintu garasi
servoMotor.write(0); // Menutup pintu (0 derajat)
}
delay(200); // Menunggu beberapa detik sebelum pengukuran berikutnya
}