Using DC Motors

DC motors are used for all sort of robotic projects.

The motor shield can drive up to 4 DC motors bi-directionally. That means they can be driven forwards and backwards. The speed can also be varied at 0.5% increments using the high-quality built in PWM. This means the speed is very smooth and won't vary!

Note that the H-bridge chip is not meant for driving continuous loads of 1.2A, so this is for small motors. Check the datasheet for information about the motor to verify its OK!

Connecting DC Motors

To connect a motor, simply solder two wires to the terminals and then connect them to either the M1, M2, M3, or M4. Then follow these steps in your sketch

Include the required libraries

Make sure you #include the required libraries

#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"

Create the Adafruit_MotorShield object

Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 

Create the DC motor object

Request the DC motor from the Adafruit_MotorShield:

Adafruit_DCMotor *myMotor = AFMS.getMotor(1);

with getMotor(port#). Port# is which port it is connected to. If you're using M1 its 1, M2 use 2, M3 use 3 and M4 use 4

Connect to the Controller

In your setup() function, call begin() on the Adafruit_MotorShield object:

AFMS.begin();

Set default speed

Set the speed of the motor using setSpeed(speed) where the speed ranges from 0 (stopped) to 255 (full speed). You can set the speed whenever you want.

myMotor->setSpeed(150);

Run the motor

To run the motor, call run(direction) where direction is FORWARD, BACKWARD or RELEASE. Of course, the Arduino doesn't actually know if the motor is 'forward' or 'backward', so if you want to change which way it thinks is forward, simply swap the two wires from the motor to the shield.

myMotor->run(FORWARD);
This guide was first published on Jul 09, 2013. It was last updated on 2018-12-06 16:03:36 -0500. This page (Using DC Motors) was last updated on Dec 06, 2018.