Arduino Nano - Ultrasonic Sensor - Servo Motor

This tutorial instructs you how to use Arduino Nano and ultrasonic sensor to control servo motor. In detail:

Hardware Preparation

1×Arduino Nano
1×USB A to Mini-B USB cable
1×Ultrasonic Sensor
1×Servo Motor
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino Nano
1×(Recommended) Screw Terminal Adapter for Arduino Nano

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Disclosure: Some of the links provided in this section are Amazon affiliate links. We may receive a commission for any purchases made through these links at no additional cost to you. We appreciate your support.

Overview of Servo Motor and Ultrasonic Sensor

If you are unfamiliar with servo motors and ultrasonic sensors (including pinouts, how they work, and how to program them), the following tutorials can help:

Wiring Diagram

The wiring diagram between Arduino Nano and Ultrasonic Sensor Servo Motor

This image is created using Fritzing. Click to enlarge image

Please note that the wiring diagram shown above is only suitable for a servo motor with low torque. In case the motor vibrates instead of rotating, an external power source must be utilized to provide more power for the servo motor. The below demonstrates the wiring diagram with an external power source for servo motor.

The wiring diagram between Arduino Nano and Ultrasonic Sensor Servo Motor

This image is created using Fritzing. Click to enlarge image

Please do not forget to connect GND of the external power to GND of Arduino Nano.

Arduino Nano Code - Ultrasonic Sensor Controls Servo Motor

/* * This Arduino Nano code was developed by * * This Arduino Nano code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * */ #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); }

Detailed Instructions

  • Connect your Arduino Nano to a computer using a USB cable.
  • Open the Arduino IDE, select the correct board and port.
  • Copy the code and open it in the Arduino IDE.
  • Click the Upload button in the Arduino IDE to compile and upload the code to the Arduino Nano.
  • Wave your hand in front of the sensor.
  • Check out the change in the servo motor.


The code above is for educational purposes. The ultrasonic sensor is very susceptible to noise. If you intend to use the ultrasonic sensor in a practical setting, you should filter out the noise from the ultrasonic sensor. For more information on how to do this, please refer to how to filter noise for ultrasonic sensor.

Video Tutorial


  • As freelancers, We are AVAILABLE for HIRE. See how to outsource your project to us
  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!