Servo Tutorial

67,029

77

38

Posted

Introduction: Servo Tutorial

Using an Arduino to control a servo motor with the use of two pushbuttons.

Step 1: Get the Appropriate Components

Please use the links provided if you need any of the components also check out the site for other great arduino goodies, they ship worldwide for free and there service is great. Plus you support me :)

Go to the site here.

Thanks for your support.

1) Arduino Link: Arduino Compatible Uno R3 Rev3 Development Board

2) Breadboard Link: Half-size 400-Pin Electronics DIY Breadboard or 830-Point Solderless Electronics DIY Breadboard

3) Push Buttons Link: DIP P4 Sqaure Switch Push Buttons (100-Pack)

4) Jumper Cables Link: Multicolored 40-Pin DuPont Breadboard Jumper Wires (20cm)

5) Two 10k Ohm Resistors Link: DIY Universal 1/4W 1% Metal Film Resistor (600PCS)

6) Servo Motor Link: Tower Pro SG90 9g Gear Steering Servo

Step 2: Connect the Power

Connect the GND and 5V

Step 3: Connect the Servo

Red to 5V

Brown/Black to GND

Orange to pin 9

Step 4: Connect the Buttons

One of the buttons to DIGITAL 2

The other to DIGITAL 4

Step 5: Check the Circuit

Make sure the circuit is correct

Step 6: The Code

I used the Sweep example from Arduino and altered it to work.

#include <servo.h>

const int buttonPin = 2;

const int buttonPin2 = 5;

int buttonState = 0;

int buttonState2 = 0;

Servo servoA;

int position = 0;

void setup() {

servoA.attach(9);

pinMode(buttonPin, INPUT);

pinMode(buttonPin2,INPUT);

}

void loop() {

buttonState = digitalRead(buttonPin);

buttonState2 = digitalRead(buttonPin2);

if(buttonState ==HIGH && position < 180){

servoA.write(position++);

delay(5);

}

if(buttonState2 == HIGH && position > 3){

servoA.write(position--);

delay(5);

}

}

Step 7: Complete

2 People Made This Project!

Recommendations

  • Science of Cooking

    Science of Cooking
  • Pocket-Sized Contest

    Pocket-Sized Contest
  • Trash to Treasure

    Trash to Treasure
user

We have a be nice policy.
Please be positive and constructive.

Tips

Questions

30 Comments

everything works excellent! Do you have any code to move 3 or more servos? Thank you!

Hi UlisesC17,

Sorry for the delayed response, I don't have access to three servos but I would imagine you just define more and more servos...

E.g.

Servo servoA;

Servo servoB;

...

Servo servoN;

Then later on in the code you will have to attach them to different pins

E.g

servoA.attach(9);

servoB.attach(10);

You will also have to declare variables to keep track of the individual positions etc.

Goodluck...

Regards

Gavin

My servo keeps rotating back to a some kind of initial position..any ideas why?

figured it out, i had to capitalize the S at the beginning

also, here's the entire message.

Arduino: 1.8.5 (Windows Store 1.8.10.0) (Windows 10), Board: "Arduino/Genuino Uno"

C:\Users\smell\Documents\Arduino\sketch_oct25a\sketch_oct25a.ino:1:19: fatal error: servo.h: No such file or directory

#include <servo.h>

^

compilation terminated.

exit status 1

Error compiling for board Arduino/Genuino Uno.

This report would have more information with

"Show verbose output during compilation"

option enabled in File -> Preferences.

I tried to get the code to work, but i keep getting this error:

"error compiling for board Arduino/genuino uno."

so I need some help on how to fix this. thanks!

In the first picture under the heading 'Step 5: Check the Circuit' the white wire is at the 6th position from the right, isn't that DIGITAL 5?

Hi Chupo_cro,


It does look that way in the photo, I have made the change in the code.

It doesn't really matter, you could make it anyone of the digital pins... Just change the number in the code accordingly.

Thanks for pointing this out.

Regards
Gavin

I am using a modified servo motor(TowerPro MG995) which allow me to rotate continuously. are this set up and codes still relevant for this servo? If not, what is the alternative? thx in advance

Hi Ammar, unfortunately the code will not work with a continuous rotation servo and there is no simple change to the code that will rectify it...

The following link discusses the topic in more depth.
https://forum.arduino.cc/index.php?topic=267166.0

Unfortunately I do not have a continuous rotation servo to figure it out with.

Regards
Gavin