Routines to control a MD03 H-bridge module.
MD03.cpp
- Committer:
- jimherd
- Date:
- 2015-11-07
- Revision:
- 1:0afd9f1a4e4f
- Parent:
- 0:7efb3e6f7c7a
File content as of revision 1:0afd9f1a4e4f:
/*
* MD03 : 24v 20A H-bridge motor driver in I2C bus
*/
#include "mbed.h"
#include "MD03.h"
MD03::MD03(PinName sda, PinName scl, int i2cAddress) : _i2c(sda, scl) {
_writeOpcode = i2cAddress & 0xFE;
_readOpcode = i2cAddress | 0x01;
_i2c.frequency(100000);
}
void MD03::set_speed(int speed)
{
char data[2];
data[0] = MD03_SPEED;
data[1] = ((speed * 255)/100);
_i2c.write(_writeOpcode, data, 2);
}
void MD03::set_accel(int acceleration)
{
char data[2];
data[0] = MD03_ACCELERATION;
data[1] = 255 - ((acceleration * 255)/100);
_i2c.write(_writeOpcode, data, 2);
}
void MD03::stop(void)
{
char data[2];
data[0] = MD03_COMMAND;
data[1] = MD03_CMD_STOP;
_i2c.write(_writeOpcode, data, 2);
}
void MD03::move_forward(void)
{
char data[2];
data[0] = MD03_COMMAND;
data[1] = MD03_CMD_FORWARD;
_i2c.write(_writeOpcode, data, 2);
}
void MD03::move_reverse(void)
{
char data[2];
data[0] = MD03_COMMAND;
data[1] = MD03_CMD_REVERSE;
_i2c.write(_writeOpcode, data, 2);
}
char MD03::read_reg(int reg)
{
char data[2];
data[0] = reg;
_i2c.write(_writeOpcode, data, 1);
_i2c.read(_readOpcode, data, 1);
return data[0];
}