小编
Published2025-10-15
Learn how to control servo motors with Arduino Nano in this detailed guide. Understand the basics of servo motors, their applications, and how to use Arduino Nano for precise motor control. This article offers easy-to-follow examples, practical insights, and essential code to help you create smooth, efficient, and innovative projects.

Arduino Nano, servo motor control, Arduino programming, servo motor project, servo motor examples, Arduino Nano projects, DIY robotics, Arduino tutorial
Introduction to Arduino Nano and Servo Motors
Understanding the Basics: What Is an Arduino Nano?
The Arduino Nano is a small but powerful microcontroller board based on the ATmega328P chip. It is one of the most popular boards for DIY electronics and robotics projects due to its compact size, affordability, and versatility. This tiny powerhouse offers all the essential features of an Arduino Uno but in a more space-efficient format. It comes with digital and analog input/output pins, allowing you to control sensors, LEDs, motors, and other devices with ease.
For beginners and hobbyists alike, the Arduino Nano is an excellent starting point for learning about programming and electronics. But what really sets it apart is its ability to interface with a variety of external components, such as servo motors.
A servo motor is a type of motor used for precise control of angular position, velocity, and acceleration. Unlike traditional motors, which continuously rotate in one direction, a servo motor can be controlled to move to a specific angle and then hold that position. This makes servo motors perfect for applications requiring precise movement, such as in robotics, mechanical arms, and even camera gimbals.
Servo motors are typically composed of a small DC motor, a feedback system (usually a potentiometer), and a control circuit. The feedback system continuously monitors the position of the motor's shaft, allowing for accurate control based on the input signal. When used with an Arduino, servo motors can perform complex motions with high precision.
How Does Arduino Control a Servo Motor?
Controlling a servo motor with an Arduino is relatively straightforward thanks to the Arduino Servo library. This library simplifies the process by handling the complex timing involved in sending the correct PWM (Pulse Width Modulation) signals to the servo. PWM is used to regulate the position of the servo by varying the width of the pulse sent to the motor’s control wire.
The servo motor responds to different PWM signal lengths, with each pulse corresponding to a specific angle. For example, a 1-millisecond pulse may correspond to the servo being in the "0-degree" position, while a 2-millisecond pulse would move it to the "180-degree" position.
Getting Started with Your First Servo Motor Project
Now that we have a basic understanding of the components, let’s walk through the process of using an Arduino Nano to control a servo motor.
Servo motor (e.g., SG90 or MG90S)
Breadboard (optional for neat wiring)
5V power supply (if required, as some servo motors require more power than the Arduino Nano can provide)
Wiring the Servo Motor to the Arduino Nano:
Connect the Servo’s Power Pin (VCC):
Connect the red wire (VCC) of the servo motor to the 5V pin on the Arduino Nano. This provides the power to the servo motor.
Connect the Ground Pin (GND):
Connect the black or brown wire (GND) of the servo to the GND pin on the Arduino Nano to complete the circuit.
Connect the Control Pin (Signal):
Connect the yellow or orange wire (signal) of the servo motor to a PWM-enabled pin on the Arduino Nano. Typically, pins D3, D5, D6, D9, D10, and D11 are capable of outputting PWM signals on the Nano.
With these three simple connections, your servo motor is ready to be controlled by the Arduino.
Writing the Code: Basic Servo Control
To control the servo, you’ll need to write a simple Arduino sketch. The Arduino Servo library takes care of the complex math behind PWM signal generation, so all we need to do is specify the angles at which we want the servo to rotate.
Here’s a basic code to get started:
#include // Include the Servo library
Servo myServo; // Create a Servo object to control the servo motor
myServo.attach(9); // Attach the servo to pin 9
myServo.write(0); // Move the servo to the 0-degree position
delay(1000); // Wait for 1 second
myServo.write(90); // Move the servo to the 90-degree position
delay(1000); // Wait for 1 second
myServo.write(180); // Move the servo to the 180-degree position
delay(1000); // Wait for 1 second
The #include statement includes the Servo library, which contains all the necessary functions to control servo motors.
Servo myServo; creates an object named myServo, which represents the servo motor. You can control this object using the functions provided by the library.
myServo.attach(9); tells the Arduino to use pin 9 to send PWM signals to the servo motor.
myServo.write(0); moves the servo to the 0-degree position, and myServo.write(90); moves it to the 90-degree position. The servo will move slowly and hold its position.
The delay(1000); function pauses the program for 1000 milliseconds (or 1 second) between each movement.
Advanced Techniques and Applications
Expanding Your Servo Control with Multiple Motors
Now that you’ve learned how to control a single servo motor, let’s explore how you can control multiple servo motors simultaneously. The process is similar, but you'll need to create more Servo objects and attach them to different pins.
Here’s how you can control two servos at once:
#include // Include the Servo library
Servo servo1; // Create two Servo objects
servo1.attach(9); // Attach servo1 to pin 9
servo2.attach(10); // Attach servo2 to pin 10
servo1.write(0); // Move servo1 to 0 degrees
servo2.write(180); // Move servo2 to 180 degrees
delay(1000); // Wait for 1 second
servo1.write(90); // Move servo1 to 90 degrees
servo2.write(90); // Move servo2 to 90 degrees
delay(1000); // Wait for 1 second
servo1.write(180); // Move servo1 to 180 degrees
servo2.write(0); // Move servo2 to 0 degrees
delay(1000); // Wait for 1 second
Using Servo Motors in Robotics
Servo motors are widely used in robotics for precise movements. Whether it's controlling a robot arm, a hexapod robot, or even a humanoid robot, servo motors offer the flexibility and accuracy needed for complex motions.
In a robotic arm, each joint is typically controlled by a separate servo motor. By coordinating the movements of each servo, the arm can be made to pick up objects, perform specific tasks, or even mimic human-like gestures. Arduino Nano's small form factor makes it an ideal choice for controlling such robots in tight spaces.
Fine-Tuning Servo Motor Performance
Servo motors are often rated for a specific range of angles, such as 0-180 degrees. However, depending on your needs, you might want to adjust the range of motion to a smaller set of angles for more precise control. This can be done by limiting the range of PWM values you send to the motor.
For example, if you only need the servo to move between 30 and 150 degrees, you can modify your code to:
myServo.write(map(analogRead(A0), 0, 1023, 30, 150)); // Control the servo based on analog input from A0
Troubleshooting Common Issues
While controlling servos with Arduino Nano is generally simple, there are a few common issues you might run into:
Some servo motors draw more current than the Arduino can provide, especially under load. Consider using an external power supply to ensure the servo has enough power.
If your servo doesn't move or behaves erratically, double-check that the PWM signal is being sent to the correct pin and that the servo is properly attached.
This is often caused by a lack of sufficient power or interference. Ensure that your wiring is secure, and that you're using a stable power source.
Stay tuned for Part 2, where we’ll dive deeper into more advanced servo control techniques, including real-time feedback loops, incorporating sensors, and integrating multiple servo motors into more complex projects!
Leveraging innovations in modular drive technology, Kpower integrates high-performance motors, precision reducers, and multi-protocol control systems to provide efficient and customized smart drive system solutions.
Update:2025-10-15
Contact Kpower's product specialist to recommend suitable motor or gearbox for your product.