#include <Servo.
h>
const int buzzerPin = 6;
Servo myservo;
int pos = 0;
// Sensor
const int trig_pin = 3;
const int echo_pin = 2;
float duration, distance;
const int distanceThreshold = 15; // Distance threshold for stopping the servo
void setup() {
Serial.begin(9600);
// Pin setup
pinMode(buzzerPin, OUTPUT);
pinMode(trig_pin, OUTPUT);
pinMode(echo_pin, INPUT);
myservo.attach(5); // Attach servo to pin 5
delay(1000);
}
void loop() {
for (pos = 0; pos <= 180; pos++) {
myservo.write(pos); // Move servo from 0 to 180 degrees
scanAndCheckDistance(pos);
delay(15); // Servo movement delay
}
for (pos = 180; pos >= 0; pos--) {
myservo.write(pos); // Move servo from 180 to 0 degrees
scanAndCheckDistance(pos);
delay(15); // Servo movement delay
}
delay(200); // Additional delay between scans
}
void scanAndCheckDistance(int angle) {
digitalWrite(trig_pin, LOW);
delayMicroseconds(2);
digitalWrite(trig_pin, HIGH);
delayMicroseconds(10);
digitalWrite(trig_pin, LOW);
duration = pulseIn(echo_pin, HIGH);
distance = (duration * 0.0343) / 2; // Calculate distance in cm
Serial.print(angle);
Serial.print(",");
Serial.println(distance);
if (distance < distanceThreshold) {
// If an object is detected within threshold distance, stop the servo and
activate the buzzer
myservo.detach();
tone(buzzerPin, 1000); // Activate buzzer
delay(1000); // Buzzer delay
noTone(buzzerPin); // Turn off buzzer
delay(1000); // Cooldown period to avoid rapid stop-start motion
myservo.attach(5); // Reattach servo to resume scanning
}
}