#include <Ultrasonic.h>
#include <Servo.h>
#define TRIG_PIN 9
#define ECHO_PIN 8
#define SERVO_PIN 11
Ultrasonic ultrasonic(TRIG_PIN, ECHO_PIN);
Servo doorServo;
int currentAngle = 0;
int doorAngle = 0;
void smoothServoMove(int targetAngle) {
if (targetAngle > currentAngle) { // If target is greater, move up
for (int angle = currentAngle; angle <= targetAngle; angle++) {
doorServo.write(angle);
delay(10); // Smooth movement delay
}
} else { // If target is lower, move down
for (int angle = currentAngle; angle >= targetAngle; angle--) {
doorServo.write(angle);
delay(10); // Smooth movement delay
}
}
currentAngle = targetAngle; // Update current position
}
void setup() {
doorServo.attach(SERVO_PIN);
doorServo.write(currentAngle);
Serial.begin(9600);
}
void loop() {
long distance = ultrasonic.read();
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
if(distance < 30)
{
if (doorAngle != 90)
{
doorAngle = 90;
smoothServoMove(doorAngle); // Slowly open the door
}
delay(3000); // Keep it open for 3 seconds
}
else if(distance > 30)
{
if (doorAngle != 0)
{
doorAngle = 0;
smoothServoMove(doorAngle); // Slowly open the door
}
}
delay(500);
}