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]; }