

The Adafruit Motor/Stepper/Servo Shield (Part ID: 1438) is a versatile shield designed for Arduino boards. It enables users to control DC motors, stepper motors, and servos with ease, making it an ideal choice for robotics, automation, and motion control projects. This shield is built around the PCA9685 PWM driver and the TB6612 MOSFET driver, providing efficient and reliable motor control.








The Adafruit Motor/Stepper/Servo Shield is packed with features to simplify motor control. Below are its key technical specifications:
| Parameter | Value |
|---|---|
| Operating Voltage | 5V (logic) |
| Motor Voltage Range | 4.5V to 13.5V |
| Maximum Current per Motor | 1.2A (continuous), 3A (peak) per channel |
| PWM Frequency | Up to 1.6 kHz |
| Communication Interface | I2C |
| I2C Address Range | 0x60 to 0x80 (configurable via jumpers) |
| Dimensions | 68mm x 53mm x 17mm |
The shield connects directly to an Arduino board and provides the following key pins for motor and servo control:
| Terminal Label | Description |
|---|---|
| M1+ / M1- | DC Motor 1 terminals |
| M2+ / M2- | DC Motor 2 terminals |
| M3+ / M3- | DC Motor 3 terminals |
| M4+ / M4- | DC Motor 4 terminals |
| Header Label | Description |
|---|---|
| SERVO1 | Servo motor control channel 1 |
| SERVO2 | Servo motor control channel 2 |
| SERVO3 | Servo motor control channel 3 |
| SERVO4 | Servo motor control channel 4 |
| Pin Label | Description |
|---|---|
| SDA | I2C data line |
| SCL | I2C clock line |
| VIN | External motor power supply input |
| GND | Ground |
The Adafruit Motor/Stepper/Servo Shield is designed to be easy to use with Arduino. Follow the steps below to get started:
Below is an example sketch to control a DC motor connected to terminal M1:
#include <Wire.h>
#include <Adafruit_MotorShield.h>
// Create the motor shield object
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
// Select the motor port (M1, M2, M3, or M4)
Adafruit_DCMotor *myMotor = AFMS.getMotor(1);
void setup() {
Serial.begin(9600); // Initialize serial communication
Serial.println("Adafruit Motor Shield DC Motor Test");
AFMS.begin(); // Initialize the motor shield
myMotor->setSpeed(150); // Set motor speed (0-255)
myMotor->run(FORWARD); // Set motor direction to forward
}
void loop() {
myMotor->run(FORWARD); // Run motor forward
delay(2000); // Wait for 2 seconds
myMotor->run(BACKWARD); // Run motor backward
delay(2000); // Wait for 2 seconds
myMotor->run(RELEASE); // Stop the motor
delay(1000); // Wait for 1 second
}
Motors Not Running
I2C Communication Failure
Motor Runs Erratically
Can I control more than 4 DC motors?
What is the maximum servo angle supported?
Can I use this shield with Raspberry Pi?
By following this documentation, you can effectively use the Adafruit Motor/Stepper/Servo Shield for your motor control projects.