Using DC Motors | Adafruit Motor Shield

Skip to main content Adafruit Motor Shield Using DC Motors
  • Overview
  • FAQ
  • Make It!
    • Preparation
    • Parts List
    • Solder It
  • Use It!
    • Library Install
    • Power Usage
    • Using RC Servos
    • Using Stepper Motors
    • Using DC Motors
    • AF_DCMotor Class
    • AF_Stepper Class
  • Resources
  • Downloads
  • Forums
  • Single page
  • Feedback? Corrections?
  • Text View
Featured Products view all
  • Angled shot of a Adafruit METRO 328 Fully Assembled Adafruit METRO 328 Fully Assembled - Arduino IDE compatible Out of Stock
192 Intermediate Project guide

Using DC Motors

This tutorial is for the now ancient V1 Motor shield. Chances are you have a V2, check out the tutorial https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino This tutorial is for historical reference and previous customers only! adafruit_products_dcmotor.jpg

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 loads over 0.6A or that peak over 1.2A so this is for small motors. Check the datasheet for information about the motor to verify its OK.

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

  1. Make sure you #include <AFMotor.h>
  2. Create the AF_DCMotor object with AF_DCMotor(motor#, frequency), to setup the motor H-bridge and latches. The constructor takes two arguments. The first is which port the motor is connected to, 1, 2, 3 or 4. frequency is how fast the speed controlling signal is. For motors 1 and 2 you can choose MOTOR12_64KHZ, MOTOR12_8KHZ, MOTOR12_2KHZ, orMOTOR12_1KHZ. A high speed like 64KHz wont be audible but a low speed like 1KHz will use less power. Motors 3 & 4 are only possible to run at 1KHz and will ignore any setting given
  3. Then you can 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.
  4. 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.
Download File Copy Code #include <AFMotor.h> AF_DCMotor motor(2, MOTOR12_64KHZ); // create motor #2, 64KHz pwm void setup() { Serial.begin(9600); // set up Serial library at 9600 bps Serial.println("Motor test!"); motor.setSpeed(200); // set the speed to 200/255 } void loop() { Serial.print("tick"); motor.run(FORWARD); // turn it on going forward delay(1000); Serial.print("tock"); motor.run(BACKWARD); // the other way delay(1000); Serial.print("tack"); motor.run(RELEASE); // stopped delay(1000); } #include <AFMotor.h> AF_DCMotor motor(2, MOTOR12_64KHZ); // create motor #2, 64KHz pwm void setup() { Serial.begin(9600); // set up Serial library at 9600 bps Serial.println("Motor test!"); motor.setSpeed(200); // set the speed to 200/255 } void loop() { Serial.print("tick"); motor.run(FORWARD); // turn it on going forward delay(1000); Serial.print("tock"); motor.run(BACKWARD); // the other way delay(1000); Serial.print("tack"); motor.run(RELEASE); // stopped delay(1000); }

Page last edited August 27, 2012

Text editor powered by tinymce.

Using Stepper Motors AF_DCMotor Class Related Guides Ladyada's Learn Arduino - Lesson #1 By lady ada beginner How to program a Zumo Robot with Simulink By Anuja Apte beginner Your browser does not support the video tag. This links to the guide Silicone Robo-Tentacle. Silicone Robo-Tentacle By Matthew Borgatti beginner Low Power Coin Cell Voltage Logger By Phillip Burgess beginner Automatic Monitor Color Temperature Adjustment By Tony DiCola beginner Adafruit Analog Accelerometer Breakouts By Bill Earl intermediate Adafruit Optical Fingerprint Sensor By lady ada intermediate Arduino GPS Clock By Tony DiCola beginner Adafruit Ultimate GPS Logger Shield By lady ada intermediate Skill Badge Requirements: Microcontrollers By Adam Kemp beginner Trainable Robotic Arm By Robert Svec intermediate Your browser does not support the video tag. This links to the guide Ladyada's Learn Arduino - Lesson #2. Ladyada's Learn Arduino - Lesson #2 By lady ada beginner Adafruit PCA9685 16-Channel Servo Driver By Bill Earl beginner A REST API for Arduino & the CC3000 WiFi Chip By M. Schwartz beginner Arduino Lesson 0. Getting Started By Simon Monk beginner
Create Wishlist
× Title Description Close Search Search
Categories

Tag » Arduino Motor Shield 4 Dc Motors Code