Tutorial #6: Servo Motor Control

Servo Motor Control

In this experiment, we will control a servo motor using the most basic of analog inputs, a potentiometer (or knob). Servos can be moved precisely by setting the horn to specific degrees/angles. The servo library must be included at the top of the code.

Servo Motor

Circuit

Here is a basic circuit:

Servo Motor Circuit

Code


/*
 Controlling a servo position using a potentiometer (variable resistor)
 by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>

 modified on 8 Nov 2013
 by Scott Fitzgerald
 http://www.arduino.cc/en/Tutorial/Knob
*/

#include <Servo.h>

Servo myservo;  // create servo object to control a servo

int potpin = 0;  // analog pin used to connect the potentiometer
int val;    // variable to read the value from the analog pin

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023)
  val = map(val, 0, 1023, 0, 180);     // scale it to use it with the servo (value between 0 and 180)
  myservo.write(val);                  // sets the servo position according to the scaled value
  delay(15);                           // waits for the servo to get there
}
          

Try

This is our first tutorial that uses libraries, but Arduino programs often require them for things like sound and sending serial data to other programs. Check out the libraries you have installed, or add more in the Arduino software environment by choosing "Sketch > Include Library >"