Version: 1.2.3
Release Date: 2014-03-24
www.pololu.com
This is a library for the Arduino that interfaces with the Pololu Dual VNH5019 Motor Driver Shield. It makes it simple to drive two brushed, DC motors.
Download the archive from GitHub, decompress it, and move the “DualVNH5019MotorShield” folder into the “libraries” subdirectory inside your Arduino sketchbook directory. You can view your sketchbook location by selecting File→Preferences in the Arduino environment; if there is not already a “libraries” folder in that location, you should create it yourself. After installing the library, restart the Arduino environment so it can find the DualVNH5019MotorShield library and its examples.
The Dual VNH5019 Motor Driver Shield can be purchased on Pololu’s website. See the motor shield user’s guide for more details.
Open this example code sketch by selecting File→Examples→DualVNH5019MotorShield→Demo.
The demo ramps motor 1 from stopped to full speed forward, ramps down to full speed reverse, and back to stopped. Then, it does the same with the other motor. Both motor’s current readings are sent over serial and can be seen with the serial monitor. If a fault is detected, a message is sent over serial.
DualVNH5019MotorShield()
- Default constructor, selects the default pins as connected by the motor shield.
DualVNH5019MotorShield(unsigned char INA1, unsigned char INB1, unsigned char EN1DIAG1, unsigned char CS1,
unsigned char INA2, unsigned char INB2, unsigned char EN2DIAG2, unsigned char CS2)
- Alternate constructor for shield connections remapped by user. PWM1 and PWM2 cannot be remapped because the library assumes PWM is on timer1.
void init()
- Initialize pinModes and timer1.
void setM1Speed(int speed)
- Set speed and direction for motor 1. Speed should be between -400 and 400. 400 corresponds to motor current flowing from M1A to M1B. -400 corresponds to motor current flowing from M1B to M1A. 0 corresponds to full coast.
void setM2Speed(int speed)
- Set speed and direction for motor 2. Speed should be between -400 and 400. 400 corresponds to motor current flowing from M2A to M2B. -400 corresponds to motor current flowing from M2B to M2A. 0 corresponds to full coast.
void setSpeeds(int m1Speed, int m2Speed)
- Set speed and direction for motor 1 and 2.
void setM1Brake(int brake)
- Set brake for motor 1. Brake should be between 0 and 400. 0 corresponds to full coast, and 400 corresponds to full brake.
void setM2Brake(int brake)
- Set brake for motor 2. Brake should be between 0 and 400. 0 corresponds to full coast, and 400 corresponds to full brake.
void setBrakes(int m1Brake, int m2Brake)
- Set brake for motor 1 and 2.
unsigned int getM1CurrentMilliamps()
- Returns current reading from motor 1 in milliamps.
unsigned int getM2CurrentMilliamps()
- Returns current reading from motor 2 in milliamps.
unsigned char getM1Fault()
- Returns 1 if there is a fault on motor driver 1, 0 if no fault.
unsigned char getM2Fault()
- Returns 1 if there is a fault on motor driver 2, 0 if no fault.
- 1.2.3 (2014-03-24): Added 20 kHz PWM support for ATmega32U4. Thanks blacksound.
- 1.2.2 (2014-03-18): Add keywords.txt file. Thanks eatonphil.
- 1.2.1 (2013-01-06): Fixed a bug in setM2Speed that was introduced in 1.2.0.
- 1.2.0 (2012-12-26): Changes the behavior of the library at speed 0 so that it makes the motor coast regardless of which direction the motor is spinning.
- 1.1.0 (2011-12-15): Arduino 1.0 compatibility.
- 1.0.1 (2011-11-07): Adds support for Arduinos not based on ATmega168/328.
- 1.0.0 (2011-10-28): Original release.