# Stepper_A3967 This is a derived class of **StepperControl** designed to operate stepper motors driven by an [Allegro A3967](https://www.sparkfun.com/products/12779) chip. To use, add `#include "extras/Stepper_A3967.h"` to the top of your sketch. The Allegro A3967 is a specialized driver designed for stepper motors. It contains a built-in PWM generator and pre-programmed stepping modes. Wiring for the [EasyDriver Sparkfun](https://learn.sparkfun.com/tutorials/easy-driver-hook-up-guide?_ga=2.152816825.1841726212.1688220137-156607829.1686369274) board that uses this chip is as follows: #### **Power Connections** * *GND* - connect to GND on the ESP32, and to ground of external DC power supply * *M+* - connect to external DC power supply that will drive stepper motor. An on-board regulator also uses this supply to provide VCC to the rest of the board. For use with an ESP32, you must short the 3.3V/5V jumper with a blob of solder to select 3.3V #### **Motor Connections** * *Motor A* - connect to the "A" coil of the stepper motor * *Motor B* - connect to the "B" coil of the stepper motor #### **Control Connections** * *ENABLE* - connect to a digital pin on the ESP32 - used to enable/disable to motor driver * *STEP, DIR* - connect to two digital pins on the ESP32 - used to step the motor and set the direction * *MS1, MS2* - connect to two digital pins on the ESP32 - used set the step mode * *SLEEP, RESET* - already pulled high on the EasyDriver board, so no connection neeed. If using a different driver board, ensure these pins are pulled high, else connect to VCC * *PFD* - not used The **Stepper_A3967** class includes the following constructor: * `Stepper_A3967(int M1, int M2, int STEP, int DIR, int ENABLE)` * controls the driver board using 5 digital pins from the ESP32, where the parameters specify the pin numbers. Supports the following step type modes: * FULL_STEP_TWO_PHASE * HALF_STEP * QUARTER_STEP * EIGHTH_STEP ❗Note: The A3967 chip does not support a short brake state. Calls to the `brake()` method, as well as setting the *endAction* parameter in the `move()` and `moveTo()` methods to **StepperControl::BRAKE** have no effect on the motor driver. --- [↩️](../Stepper.md) Back to the Stepper Motor Control page