#include <Servo.h>
Servo doorServo; // Membuat objek Servo
int servoPin = 9; // Pin yang terhubung ke motor servo
const int trigPin1 = 2; // Pin trigger sensor ultrasonik pertama
const int echoPin1 = 3; // Pin echo sensor ultrasonik pertama
const int trigPin2 = 4; // Pin trigger sensor ultrasonik kedua
const int echoPin2 = 5; // Pin echo sensor ultrasonik kedua
const int trigPin3 = 6; // Pin trigger sensor ultrasonik ketiga
const int echoPin3 = 7; // Pin echo sensor ultrasonik ketiga
const int ledPin = 8;
int maxDistance1 = 10;
int maxDistance2 = 20;
int maxDistance3 = 30;
void setup() {
doorServo.attach(servoPin); // Menghubungkan motor servo ke pin 9
doorServo.write(90); // Mengatur pintu dalam posisi awal (90 derajat)
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(trigPin3, OUTPUT);
pinMode(echoPin3, INPUT);
pinMode(ledPin, OUTPUT); // Mengatur pin LED sebagai output
Serial.begin(9600);
}
void loop() {
int distance1 = getDistance(trigPin1, echoPin1);
int distance2 = getDistance(trigPin2, echoPin2);
int distance3 = getDistance(trigPin3, echoPin3);
// Buka pintu jika salah satu sensor mendeteksi objek dalam jarak yang ditentukan
if (distance1 <= maxDistance1 || distance2 <= maxDistance2 || distance3 <= maxDistance3) {
doorServo.write(0); // Buka pintu (0 derajat)
digitalWrite(ledPin, HIGH); // Nyalakan LED
delay(2000);
doorServo.write(90); // Tutup pintu (kembali ke posisi awal)
digitalWrite(ledPin, LOW); // Matikan LED
}
}
int getDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
return pulseIn(echoPin, HIGH) / 58; // Menghitung jarak dalam cm
}