#include <Servo.h>
// Definisikan pin untuk sensor ultrasonik
const int trigPin = 9;
const int echoPin = 10;
// Definisikan pin untuk servo motor
const int servoPin = 8;
// Definisikan objek untuk servo motor
Servo myServo;
// Variabel untuk menyimpan jarak yang terdeteksi oleh sensor ultrasonik
long distance;
void setup() {
// Inisialisasi Serial Monitor
Serial.begin(9600);
// Atur pin trigPin sebagai output dan echoPin sebagai input
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Atur pin servoPin sebagai output
myServo.attach(servoPin);
}
void loop() {
// Mengirimkan sinyal ultrasonik
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Menerima pulsa balik dari ultrasonik dan menghitung jarak
distance = pulseIn(echoPin, HIGH) * 0.034 / 2;
// Menampilkan jarak di Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);
// Menggerakkan servo motor berdasarkan jarak yang terdeteksi
if (distance < 11) {
// Jika jarak kurang dari 20 cm, buka pintu
openDoor();
} else {
// Jika tidak, tutup pintu
closeDoor();
}
// Tunda sebentar sebelum membaca sensor lagi
delay(100);
}
// Fungsi untuk membuka pintu
void openDoor() {
myServo.write(180); // Putar servo motor ke posisi 90 derajat (buka pintu)
delay(100); // Tunda sebentar untuk memberi waktu pintu terbuka
}
// Fungsi untuk menutup pintu
void closeDoor() {
myServo.write(0); // Putar servo motor ke posisi 0 derajat (tutup pintu)
delay(100); // Tunda sebentar untuk memberi waktu pintu tertutup
}