小编
Published2025-10-15
This article will guide you through controlling two servo motors using Arduino. From basic setup to advanced programming, learn how to build projects that require precise motor movements. Whether you are a beginner or looking to improve your skills, this guide will provide you with the knowledge you need to bring your ideas to life.

Arduino, servo motors, servo motor control, two servo motors, Arduino servo code, stepper motor, robotics, microcontroller, electronics, DIY projects, Arduino projects, servo motor tutorial, automation
Introduction to Servo Motors and Arduino
When it comes to controlling precise movements in a project, servo motors are often the go-to choice for hobbyists and engineers alike. Whether you're building a robotic arm, a drone, or a simple mechanical project, servo motors offer the perfect blend of simplicity and accuracy. If you're looking to control two servo motors simultaneously using an Arduino, you've come to the right place!
In this guide, we will walk you through how to set up and program two servo motors to work together seamlessly. We'll start with an introduction to servo motors, Arduino basics, and then dive into how to control two servos with simple code. Along the way, you will learn the necessary concepts and wiring techniques to make your projects more functional and fun.
A servo motor is a small, powerful motor that can rotate to a specific position within a limited range, typically from 0 to 180 degrees. What makes servo motors unique is their ability to maintain their position until a new signal is received. This is achieved by a feedback loop within the servo that constantly monitors its position, ensuring precise control.
Servos are commonly used in robotic applications, camera gimbals, automated systems, and many other projects where precise angular movement is necessary. Unlike DC motors, which continuously rotate when powered, servos are designed to stop at a specific angle when instructed.
Why Use Arduino with Servo Motors?
Arduino is an open-source microcontroller platform that provides an easy way to control hardware like motors, sensors, lights, and much more. By combining Arduino with servo motors, you can automate movements, create interactive projects, or even control objects remotely. Arduino's simplicity and accessibility make it perfect for both beginners and experienced engineers.
Components Needed for the Project
To get started, you will need the following components:
Arduino Board (e.g., Arduino Uno, Nano, or Mega)
Two Servo Motors (e.g., SG90 or MG996R)
Breadboard (optional, but helpful for prototyping)
External Power Supply (for larger servos, especially if they require more current)
Arduino IDE (Software for programming the Arduino)
How to Wire the Servo Motors to Arduino
Before diving into the code, it’s crucial to understand how to wire the servo motors to the Arduino board. Typically, servo motors have three pins:
VCC (Power): This is the power supply pin, which should be connected to the 5V pin on the Arduino.
GND (Ground): Connect this pin to one of the GND pins on the Arduino.
Control (Signal): This is the pin that receives the PWM (pulse width modulation) signal from the Arduino. You will connect this pin to a digital I/O pin on the Arduino, like pin 9 or pin 10.
For controlling two servo motors, simply connect the signal wires of the second servo to another digital I/O pin (say, pin 10), and make sure both servos share the same power and ground connections.
Tip: If you're using larger servos that draw more current, you may need an external power supply to avoid overloading the Arduino's 5V regulator.
Basic Servo Motor Control with Arduino
To control a servo motor with Arduino, you’ll use the Servo library, which simplifies controlling the motor. The code below shows a basic setup for controlling a single servo motor:
Servo myServo; // Create a Servo object
myServo.attach(9); // Connect the servo signal wire to pin 9
myServo.write(0); // Move the servo to 0 degrees
delay(1000); // Wait for 1 second
myServo.write(90); // Move the servo to 90 degrees (middle position)
delay(1000); // Wait for 1 second
myServo.write(180); // Move the servo to 180 degrees
delay(1000); // Wait for 1 second
In this simple code, we attach the servo to pin 9, and the servo rotates between 0, 90, and 180 degrees with a 1-second delay between each move.
Programming Two Servo Motors for Simultaneous Control
Now that we've gone over the basics of servo motor control, let’s extend this to controlling two servo motors simultaneously. This will allow you to create more complex movements and interactions, perfect for robotics, automation, or any project that requires multiple actuators.
Controlling Two Servo Motors with Arduino
In order to control two servo motors independently, we can use the same Servo library and simply create two Servo objects. Each object will control one servo motor, and we’ll use the write() function to move each servo to a specific angle. Below is the code to control two servos:
Servo servo1; // Create first servo object
Servo servo2; // Create second servo object
servo1.attach(9); // Attach the first servo to pin 9
servo2.attach(10); // Attach the second servo 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
This code moves servo1 from 0 to 90 to 180 degrees and servo2 from 180 to 90 to 0 degrees. Both servos move in a synchronized manner, with each servo taking 1 second to complete its move. You can easily modify this code to create more complex movements, such as rotating both servos to the same angle or creating alternating patterns.
Advanced Control: Speed and Smooth Movement
While the basic example is great for understanding servo control, in many projects, you’ll want to achieve smooth, gradual movement rather than abrupt stops. This can be done by slowly changing the position of the servo over time. Arduino’s write() function allows you to send integer values representing the servo angle, but you can achieve more gradual movement by using a combination of write() and delay() to increment the position slowly.
Here’s an example of how to smoothly move both servos from 0 to 180 degrees:
for (int pos = 0; pos <= 180; pos++) {
servo1.write(pos); // Move servo1 gradually to the right
servo2.write(180 - pos); // Move servo2 gradually to the left
delay(15); // Wait for the servo to reach the position
for (int pos = 180; pos >= 0; pos--) {
servo1.write(pos); // Move servo1 gradually to the left
servo2.write(180 - pos); // Move servo2 gradually to the right
delay(15); // Wait for the servo to reach the position
This code moves both servos in a sweeping motion, from 0 to 180 degrees and back. The delay(15) helps slow down the movement, making it smooth.
Conclusion and Further Exploration
By now, you’ve learned the fundamentals of controlling two servo motors with an Arduino. You can apply these principles to create anything from simple robotic arms to advanced automation systems. The ability to control two servos independently opens the door to many creative possibilities.
For more advanced projects, consider integrating sensors like potentiometers or motion detectors to control servo positions based on real-time data. You could also experiment with controlling the speed of the servos using PWM signals or even explore more complex communication methods like I2C or SPI.
With Arduino, the possibilities are endless, and mastering servo control is one of the key steps to becoming an expert in robotics and automation. Happy building!
Established in 2005, Kpower has been dedicated to a professional compact motion unit manufacturer, headquartered in Dongguan, Guangdong Province, China.
Update:2025-10-15
Contact Kpower's product specialist to recommend suitable motor or gearbox for your product.