Introduction: Controlling a Servo With an Arduino 101

Servos are a very important piece of hardware in the maker hobby. It is has a wide variety of application due to it's small size, affordable, and lightweight nature while having a very fine precision. A servo motor offers many of the advantages and use cases of a stepper motor apart from one major deterrent; it lacks torque. There are relatively high torque servos for its size, however these servo motors are generally much more expensive.

One of the most popular use case for a servo motor is for controlling the control surfaces such as ailerons, elevators, and rudder of an RC airplane, allowing for fine tuning and control of a plane's roll, pitch, and roll respectively.

Step 1: Tools and Materials

  • Arduino 101 or Arduino Uno
  • Servo Motor and servo horns
  • Jumper Wires
  • Screwdriver

Step 2: Circuitry

The circuitry of a servo is very simple which is one of the major advantages of a servo over stepper motors. All that is needed are three wires for power, ground, and signal.

Connecting the Servo motor to the Arduino

  • Connect the black (sometimes brown) wire from the servo to the GND pin on the Arduino using a black male/male jumper wire.
  • Connect the red (sometimes orange) wire from the servo to the 5V pin on the Arduino using a red male/male jumper wire
  • Connect the white (sometimes yellow) wire from the servo to pin 8 on the Arduino using any other coloured male/male jumper wire.

Step 3: Centering the Servo

Servo motors usually do not come pre-centred out of the package. Luckily, it's not difficult to centre the servo. When you supply power on the servo it will centre itself.

  • Momentarily connect the Arduino to a power source (your computer or a battery through the barrel jack), then unplug it.
  • You will hear some gears spinning centering it.
  • Adjust the servo horn to 0 degrees.
  • Screw the servo horn to the top

Step 4: Coding

It is quite simple to control a servo motor too! This is largely due to the availability of an Arduino library that allows us to finely adjust the motion of a servo in one line of code.

//include the servo library

//create a servo object called servo1 Servo servo1;

void setup() { //attach servo1 to pin 9 on the Arduino 101 servo1.attach(9); }

void loop() { // variable to specify the postion of the servo. int position;

// Note that: The servo can move from 0 to 190 degrees // Tell servo to go to 90 degrees servo1.write(90);

// Pause to get it time to move delay(1000);

// Tell servo to go to 180 degrees servo1.write(180);

// Pause to get it time to move for a second delay(1000);

// Tell servo to go to 0 degrees servo1.write(0);

// Pause to get it time to move for a second delay(1000);


Step 5: Demo

The servo will loop between 90 degrees and 180 degrees. In the demo video, I also had it programmed to incrementally move from 0 to 180.

Makerspace Contest 2017

Participated in the
Makerspace Contest 2017