Routines to control a MD03 H-bridge module.

Revision:
0:7efb3e6f7c7a
Child:
1:0afd9f1a4e4f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MD03.cpp	Thu Jun 25 19:55:40 2015 +0000
@@ -0,0 +1,65 @@
+/*
+ * 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;
+}
+ 
+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];
+}