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!
The AF_Stepper class provides single and multi-step control for up to 2 stepper motors when used with the Adafruit Motor Shield.  To use this in a sketch you must first add the following line at the beginning of your sketch:
#include <AFMotor.h>

AF_Stepper steppername(stepsportnumber)

The AF_Stepper constructor defines a stepper motor.  Call this once for each stepper motor in your sketch.  Each stepper motor instance must have a unique name as in the example below.

Parameters:
  • steps - declare the number of steps per revolution for your motor.
  • num - declare how the motor will be wired to the shield. 
Valid values for 'num' are 1 (channels 1 & 2) and 2 (channels 3 & 4).
Example:
AF_Stepper Stepper1(48, 1);  // A 48-step-per-revolution motor on channels 1 & 2
AF_Stepper Stepper2(200, 2);   // A 200-step-per-revolution motor on channels 3 & 4

step(steps, direction, style)

Step the motor.

Parameters:
  • steps - the number of steps to turn
  • direction - the direction of rotation (FORWARD or BACKWARD)
  • style - the style of stepping:
Valid values for 'style' are:
  • SINGLE - One coil is energized at a time.
  • DOUBLE - Two coils are energized at a time for more torque.
  • INTERLEAVE - Alternate between single and double to create a half-step in between.  This can result in smoother operation, but because of the extra half-step, the speed is reduced by half too.
  • MICROSTEP - Adjacent coils are ramped up and down to create a number of 'micro-steps' between each full step.  This results in finer resolution and smoother rotation, but with a loss in torque.
Note: Step is a synchronous command and will not return until all steps have completed.  For concurrent motion of two motors, you must handle the step timing for both motors and use the "onestep()" function below.
Stepper1.step(100, FORWARD, DOUBLE); // 100 steps forward using double coil stepping
Stepper2.step(100, BACKWARD, MICROSTEP);   // 100 steps backward using double microstepping

setSpeed(RPMspeed)

set the speed of the motor

Parameters:
  • Speed - the speed in RPM

Note: The resulting step speed is based on the 'steps' parameter in the constructor.  If this does not match the number of steps for your motor, you actual speed will be off as well.

Example:
Stepper1.setSpeed(10);  // Set motor 1 speed to 10 rpm  
Stepper2.setSpeed(30);  // Set motor 2 speed to 30 rpm

onestep(direction, stepstyle)

Single step the motor.

Parameters:
  • direction - the direction of rotation (FORWARD or BACKWARD)
  • stepstyle - the style of stepping:
Valid values for 'style' are:
  • SINGLE - One coil is energized at a time.
  • DOUBLE - Two coils are energized at a time for more torque.
  • INTERLEAVE - Alternate between single and double to create a half-step in between.  This can result in smoother operation, but because of the extra half-step, the speed is reduced by half too.
  • MICROSTEP - Adjacent coils are ramped up and down to create a number of 'micro-steps' between each full step.  This results in finer resolution and smoother rotation, but with a loss in torque.
Example:
Stepper1.onestep(FORWARD, DOUBLE);  // take one step forward using double coil stepping

release()

Release the holding torque on the motor.  This reduces heating and current demand, but the motor will not actively resist rotation.

Example:
Stepper1.release(); // stop rotation and turn off holding torque.

This guide was first published on Aug 27, 2012. It was last updated on Mar 08, 2024.

This page (AF_Stepper Class) was last updated on Aug 23, 2012.

Text editor powered by tinymce.