

#include <Servo.h>

#define TRIG_PIN   2  // The Arduino Nano pin connected to TRIG pin of ultrasonic sensor
#define ECHO_PIN   3  // The Arduino Nano pin connected to ECHO pin of ultrasonic sensor
#define SERVO_PIN  9  // The Arduino Nano pin connected to servo motor

#define DISTANCE_THRESHOLD  50 // in centimeters

Servo servo; // create servo object to control a servo

float duration_us, distance_cm;

void setup() {
  Serial.begin (9600);       // Initialize the Serial to communicate with the Serial Monitor.
  pinMode(TRIG_PIN, OUTPUT); // set  arduino pin to output mode
  pinMode(ECHO_PIN, INPUT);  // set  arduino pin to input mode
  servo.attach(SERVO_PIN);   // attaches the servo on pin 9 to the servo object
  servo.write(0);
}

void loop() {
  // Produce a 10-microsecond pulse to the TRIG pin.
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  // Measure the pulse duration from the ECHO pin
  duration_us = pulseIn(ECHO_PIN, HIGH);
  // calculate the distance
  distance_cm = 0.017 * duration_us;

  if (distance_cm < DISTANCE_THRESHOLD)
    servo.write(90); // rotate servo motor to 90 degree
  else
    servo.write(0);  // rotate servo motor to 0 degree

  // print the value to Serial Monitor
  Serial.print("distance: ");
  Serial.print(distance_cm);
  Serial.println(" cm");

  delay(500);
}
