#include <Servo.h>
// Constants
const int triggerPin = 2; // Pin trigger sensor jarak
const int echoPin = 3; // Pin echo sensor jarak
const int servoPin = 9; // Pin motor servo
const int ledPin = 12; // Pin LED
const int buzzerPin = 13; // Pin buzzer
const int closedAngle = 0; // Sudut pintu tertutup
const int openAngle = 90; // Sudut pintu terbuka
const int distanceThreshold = 60; // Ambang batas jarak
// Variables
Servo doorServo;
long duration;
int distance;
void setup() {
// Initialize Serial Monitor
Serial.begin(9600);
// Initialize Servo Motor
doorServo.attach(servoPin);
// Initialize Sensor Pins
pinMode(triggerPin, OUTPUT);
pinMode(echoPin, INPUT);
// Initialize LED and Buzzer Pins
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
}
void loop() {
// Measure distance using HCSR04
measureDistance();
// Check distance threshold for opening/closing the door
if (distance < distanceThreshold) {
openDoor();
} else {
closeDoor();
}
// Delay before next measurement
delay(100); // Adjust the delay as needed
}
void measureDistance() {
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
}
void openDoor() {
doorServo.write(openAngle);
digitalWrite(ledPin, HIGH);
tone(buzzerPin, 1000);
delay(1000);
noTone(buzzerPin);
}
void closeDoor() {
doorServo.write(closedAngle);
digitalWrite(ledPin, LOW);
}