Picture of Arduino Motor Shield Tutorial
The Arduino Motor Shield allows you to easily control motor direction and speed using an Arduino. By allowing you to simply address Arduino pins, it makes it very simple to incorporate a motor into your project. It also allows you to be able to power a motor with a separate power supply of up to 12v. Best of all, the shield is very easy to find. Aside from being sold a number of places online, they are now stocked by most Radioshack stores. For all of these reasons, the Arduino Motor Shield if a cool little to have in your arsenal for rapid prototyping, and general experimenting.

Step 1: Install

Picture of Install
The pins of the official Arduino motor shield will only align with Arduino Uno Rev. 3.

In order to make it work with older versions of the Arduino, you will need to trim a few pins off the motor shield. However, this is not, at all, recommended.

Insert the motor shield pins into the socket of the Arduino Uno.
1-40 of 123Next »
CalvinC82 days ago

I would like to know if i want to drive 4 motor, can i buy 2 motor shield and add those 2 shield togehter on arduino uno board??

vsharma2310 months ago

I m new in Arduino and i m trying to make. i m using this motor controler can you plz help me how to connect it with arduino and dc motor.??

plz reply..

I am stuck with the same problem

go to adafruit.com

Ofibro Ofibro2 months ago

it is theirs

For the stepper motor code, what is the difference between the two versions that makes them spin the motor in opposite directions? The two code sets look the same to me, but since I am just starting with this, I can easily be overlooking the critical difference. And is "delaylegnth" supposed to be "delaylength" (as I said, just starting, so I am not familiar with the syntax quirks). Thanks!
randofo (author)  firephotoputer3 years ago
delaylegnth is a variable, so it was defined (misspelled) by me. If you correct one instance of the spelling, just be sure to correct all of them in the code.

The difference between the two is the direction of Channel B in each of the codes. Look at the difference of sequence for: digitalWrite(13, HIGH); //Sets direction of CH B
Ofibro randofo2 months ago

hi great project


i have a problem with my external power supply

i tried everything, from disconnecting and connecting the bridge under the board right below the VIN pin i tried using a 9v jack i connected the 9v battery to the arduino's VIN pin directly.




to make matters worse, i bought another one yet still no use i borrowed two of them from my friend yet STILL no use


im deeply in need of you


P.S i know how to program it really good my problem lies on the power supply




Ofibro Ofibro2 months ago


just to the point of giving up I FINNALY got it.

all that it needed was amps.

I was using an lakline 9V battery which supplied 500mAh, which of course wasnt enough..

so i bought a couple of rechargeable batteries and VOLA it worked

keep in mind that those rechargeable batteries were 2200mAh @ 1.2 volts x5 so that was enough to get those motors moving!!

thanks anyways and great project.


Now that you have pointed it out, the difference between the versions is obvious. Thank you!
circitfied4 months ago

If your device requires more current and you are feeling rich you can just piggyback another motor shield on top and and join the connection block together.

blasterboy4411 months ago


You may try using "https://processing.org/" which is an advanced arduino based PDE file writing app. If you are up to the programming aspects it should be able to allow you to create what you need. larystoy@yahoo.com

Did you ever get it figured out? This is what I'm trying to do as well.

train459 [at] gmail

Podria alimentar el shield con 24 voltios para un canal a 2 amp para usar un solo motor. b_ playa1@hotmail.com muchas gracias
Train456 months ago

Does it matter what order you connect the two coils? What if you reverse the two wire to one of the coils, will it still work?

Train45 Train456 months ago

For that matter, how do you connect a uni-polar stepper? Where does the fifth wire go?

AR-OAR 16 months ago

I have a arduino motor shield, and I was using it with my arduino uno rev3.This birthday I bought a arduino mega 2560r3. So I just wanted to know if it would work with my shield

AR-OAR 16 months ago

I have a arduino motor shield, and I was using it with my arduino uno rev3.This birthday I bought a arduino mega 2560r3. So I just wanted to know if it would work with my shield

What if i want to control 4 motors? what would be the possible solutions? thank you. :)

lezabour7 months ago

Hi there,

Thanks for this instructable, very good and clear

I have a problem with the power.

I have 2 motor, the arduino uno + motorshield v3

When i'm in USB, no need of external power, everything works.

If i put USB + shield external power ->

But as soon as i unplug USB, no matter what, nothing works:

9v External Uno + 9v external motor shield -> nothing happen

is there some specific wiring to do when using 2 external power supply?

Thanks again for your help

Tranber729 months ago


Do you have a solution and a code to control these two motors dc with an analog Joystick like http://www.robotshop.com/eu/fr/mini-capteur-manche...

Thank you for your help

I am also looking for a solution to this. Please let me know if you find out.


I find a system by software for can control one unipolar stepper motor using one Arduino Motor Shield R3

I use this and there are an example of 3 unipolar stepper motors using 3 Arduino Motor Shield R3 into my free APP "Arduino CNC Controller" I put instructions and pictures explain how to connect 3 boards, I use one Arduino Mega 2560 R3

Really there are 2 examples, the first example is using 3 bipolar stepper motors, that is normal example, and second example is using 3 unipolar/monopolar stepper motors.

Is free on Google Play: "Arduino CNC Controller"



This APP have a Window of "Help and documentation" in witch you can read this source code example.

Or you can download on:


xsalvador9 months ago


Thank you for that great tuto !

Could you please help me ? I made my own bot (2 sensors light to A3 and A4, 2 motors on A and N). It's ok and work fine. But as soon as i unplug usb cable, motor shield starts blinking (i tried 9V to the power of the shield, 12V too; i tried to plug a battery to the shield AND to the arduino... Nothing. Motors don't work. If i plug just one motor, that's ok. What could be the problem ? Is the shield broken ? It works fine with USB,..

Thanks for all that great stuff.

RichardR310 months ago

Thank you Sir Randofo!

This is what I really need, I hope you can also give us sample of 2 L293D and 4 motors running in one Arduino.

vsharma2310 months ago
dudes10 months ago

I have a question, This code, delaylegnth = delaylegnth - 1, makes the delaylegnth decrease by 1 everytime the loop repeats. How would I make the delaylegnth decrease by .1?

dudes dudes10 months ago

Nevermind, i figured it out. Just use 'delayMicroseconds' instead of 'delay'

dudes dudes10 months ago

Oh and BTW, awesome instructable! Helped a ton.

stef800011 months ago

hello, can i have a code for 2 dc motor control? none of those i have works, how can i know that the shield works?

cvbizz11 months ago

I have the Arduino stacked with a motor shield and then a red bear blue tooth shield stacked on top of the motor shield. How do I get the blue tooth shield to talk to the motor shield? Thanks

louisc21 year ago

hi im new to motor shields and need some code so i came have two momentary buttons one to spin the motor one direction one the other direction

TryChick1 year ago

I'm using the Adafruit Ultimate GPS logger shield with the Arduino motor shield stacked on top with an Arduino Mega as my controller and have discovered I have some pin conflicts. This motor shield uses 3 pins (11, 12, 13) which the GPS shield also uses to read/write to the SD card which logs the GPS data. Any way to resolve this conflict or do I need to get a different shield which uses different pins to control the motors? I tried connecting the motors to different pins on the shield (instead of pin 11==>used pin 5, instead of pin 12==> used pin 4, instead of pin 13==> used pin 7) but the only thing that still works is the one pin I didn't change...pin 3 which controls the PWM of one side. so that motor works going forward and that is it.

amya phyu1 year ago

How to connect 2 or more motor shields??

My USB port connection is getting lost to the Arduino mega 2560 when i supply external current through an LED driver upto 1000mamp. I tried checking for 250ma and 350ma 0n the serial monitor by powering dc motors at 12v dc...it works fine but only at 1A and above the connection b/w usb port and controller is lost.

Kindly need suggestions to the earliest.?

chris9112 years ago
How do i write the code to make a momentary switch, start the motor. Without having to hold down the switch?

Hi there is sample code in the Arduin IDE for using a momentary switch. Here is my adaptation of it. Not sure if it actually works since I don't have an arduino handy.


The circuit:
* pushbutton attached to pin 2 from +5V
* 10K resistor attached to pin 2 from ground

// constants won't change. They're used here to
// set pin numbers:
const int buttonPin = 2; // the number of the pushbutton pin

// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
int buttonPushed = 0; // button pushed variable. 0 means NOT PUSHED

void setup() {
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);

while (buttonPushed =0){
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// get out of this loop by setting the value of x to 1
x = 1

void loop(){

// your motor code goes here


I'm a newbie at the hardware, but from programming experience, I would say you need to make a boolean variable called running or something like that. Then when the button is pressed have an if statement that changes it to true if it is false and false if it is true. After that, only make the motor run when the variable is true.

1-40 of 123Next »