upm
0.4.1
Sensor/Actuator repository for libmraa (v0.8.0)
|
API for the Grove I2C Motor Driver. More...
This class implements support for the Grove I2C Motor Driver. This device can support a single 4-wire stepper motor, or two 2-wire DC motors. The device contains an Atmel* ATmega8L microcontroller that manages an L298N H-bridge driver chip.
This device supports an I2C bus speed of 100Khz only.
The module does not provide any telemetry or status - it only accepts I2C commands for its various operations.
This module was tested with version 1.3 of the Grove I2C Motor Driver.
For stepper operation, this driver can run in one of two modes - Mode 1, where this driver handles the stepping operation, and Mode 2, where this driver simply sends commands to the Grove Motor Driver, and it handles the stepping operation. Mode2 requires updated (and working) firmware to be loaded onto the device.
The default stepper operation mode is Mode1, which is generally more flexible and is supported on all firmware revisions.
An example showing the use of a DC motor
An example showing the use of a 4-wire stepper
Classes | |
class | DC_DIRECTION_T |
class | REG_T |
class | STEP_DIRECTION_T |
class | STEP_MODE_T |
Public Member Functions | |
synchronized void | delete () |
GroveMD (int bus, short address) | |
GroveMD (int bus) | |
boolean | writePacket (GroveMD.REG_T reg, short data1, short data2) |
boolean | setMotorSpeeds (short speedA, short speedB) |
boolean | setPWMFrequencyPrescale (short freq) |
boolean | setPWMFrequencyPrescale () |
boolean | setMotorDirections (GroveMD.DC_DIRECTION_T dirA, GroveMD.DC_DIRECTION_T dirB) |
boolean | enableStepper (GroveMD.STEP_DIRECTION_T dir, short speed) |
boolean | disableStepper () |
boolean | setStepperSteps (long steps) |
void | configStepper (long stepsPerRev, GroveMD.STEP_MODE_T mode) |
void | configStepper (long stepsPerRev) |
GroveMD | ( | int | bus, |
short | address | ||
) |
GroveMD constructor
bus | I2C bus to use |
address | I2C address to use |
void configStepper | ( | long | stepsPerRev, |
GroveMD.STEP_MODE_T | mode | ||
) |
Configure the initial Stepper parameters. This should be called before any other stepper method.
stepsPerRev | The number of steps required to complete one full revolution. |
mode | The stepper operating mode, default STEP_MODE1 |
boolean disableStepper | ( | ) |
To control a stepper motor, stops the stepper motor.
boolean enableStepper | ( | GroveMD.STEP_DIRECTION_T | dir, |
short | speed | ||
) |
To control a stepper motor, sets its direction and speed, and then starts operation. For Mode2, this method will return immediately. For Mode1 (the default) this method returns when the number of steps specified by setStepperSteps() has completed.
dir | Direction, STEP_DIR_CW or STEP_DIR_CCW |
speed | Motor speed. Valid range is 1-255. For Mode 1 (default), this specifies the speed in RPM's. For Mode 2, speed is multiplied by 4ms by the board, so higher numbers will mean a slower speed. |
boolean setMotorDirections | ( | GroveMD.DC_DIRECTION_T | dirA, |
GroveMD.DC_DIRECTION_T | dirB | ||
) |
To control DC motors, sets the directions of motors A & B
dirA | Direction for motor A, DIR_CW or DIR_CCW |
dirB | Direction for motor B, DIR_CW or DIR_CCW |
boolean setMotorSpeeds | ( | short | speedA, |
short | speedB | ||
) |
To control DC motors, sets the speed of motors A & B. Valid values are 0-255.
speedA | Speed of motor A |
speedB | Speed of motor B |
boolean setPWMFrequencyPrescale | ( | short | freq | ) |
To control DC motors, sets the PWM frequency prescale factor. Note: this register is not ducumented other than to say the default value is 0x03. Presumably, this is the timer prescale factor used on the ATMega MCU timer driving the PWM.
freq | PWM prescale frequency; default is 0x03 |
boolean setStepperSteps | ( | long | steps | ) |
To control a stepper motor, specifies the number of steps to execute. For Mode2, valid values are between 1-255, 255 means continuous rotation.
For Mode1 (the default) steps can be any positive integer.
steps | Number of steps to execute. 255 (only in Mode2) means continuous rotation. |
boolean writePacket | ( | GroveMD.REG_T | reg, |
short | data1, | ||
short | data2 | ||
) |
Composes and writes a 3-byte packet to the controller
reg | Register location |
data1 | First byte of data |
data2 | Second byte of data |