#include <Servo.h>
#define trigPin 2
#define echoPin 3
#define pirPin 4
#define servoPin 5
#define ledHijau 7
#define buzzer 8
Servo pintu;
long durasi;
float jarak;
int nada[] = {262, 330, 392};//pengenalan variable nada untuk melakukan iterasi nada
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(pirPin, INPUT);
pinMode(ledHijau, OUTPUT);
pinMode(buzzer, OUTPUT);
pintu.attach(servoPin);
pintu.write(0); // posisi pintu tertutup
}
void loop() {
// --- Sensor PIR ---
int gerakan = digitalRead(pirPin);
// --- Sensor Ultrasonik ---
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
durasi = pulseIn(echoPin, HIGH);
jarak = durasi * 0.034 / 2;
// --- Logika pintu otomatis ---
if (gerakan == HIGH && jarak < 50) {
// Gerakan dan jarak terdeteksi
digitalWrite(ledHijau, HIGH);
pintu.write(90); // buka pintu
for (int i = 0; i < 3; i++) {
tone(buzzer, nada[i]);
delay(300);
noTone(buzzer);
delay(100);
}
}
else {
// Tidak ada gerakan
digitalWrite(ledHijau, LOW);
pintu.write(0); // tutup pintu
noTone(buzzer);
}
delay(100);
}