#include <Servo.h>
#define TRIG_PIN 9
#define ECHO_PIN 8
#define SERVO_PIN 12
Servo myServo;
long getDistance() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
long distance = duration * 0.034 / 2; // convert to cm
return distance;
}
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
myServo.attach(SERVO_PIN);
Serial.println("Ultrasonic + Servo Test");
}
void loop() {
// Sweep from 0° to 180°
for (int angle = 0; angle <= 180; angle += 10) {
myServo.write(angle);
delay(300);
long distance = getDistance();
Serial.print("Angle: ");
Serial.print(angle);
Serial.print("°, Distance: ");
Serial.print(distance);
Serial.println(" cm");
}
// Sweep back from 180° to 0°
for (int angle = 180; angle >= 0; angle -= 10) {
myServo.write(angle);
delay(300);
long distance = getDistance();
Serial.print("Angle: ");
Serial.print(angle);
Serial.print("°, Distance: ");
Serial.print(distance);
Serial.println(" cm");
}
}