Library to drive the Zumo shield from pololu.

Dependents:   Nucleo_Zumo_BLE_IDB04A1

https://www.pololu.com/category/169/zumo-robot-for-arduino

Revision:
0:c69b20870374
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ZumoShield.cpp	Mon Oct 12 11:32:33 2015 +0000
@@ -0,0 +1,122 @@
+#include "ZumoShield.h"
+#include "mbed.h"
+
+ZumoShield::ZumoShield(PinName m1_pwm_pin, PinName m1_dir_pin,
+                       PinName m2_pwm_pin, PinName m2_dir_pin) :
+//                     PinName a0_pin, PinName a1_pin, PinName a2_pin, PinName a3_pin, PinName a4_pin, PinName a5_pin) :
+    m1pwm(m1_pwm_pin),
+    m1dir(m1_dir_pin),
+    m2pwm(m2_pwm_pin),
+    m2dir(m2_dir_pin)
+    /*
+    a0sens(a0_pin),
+    a1sens(a1_pin),
+    a2sens(a2_pin),
+    a3sens(a3_pin),
+    a4sens(a4_pin),
+    a5sens(a5_pin)
+    */
+{
+}
+
+void ZumoShield::left_motor(float speed)
+{
+    if (speed >= 0) {
+        m2pwm = speed;
+        m2dir = 0;
+    } else {
+        m2pwm = -speed;
+        m2dir = 1;
+    }
+}
+
+void ZumoShield::right_motor(float speed)
+{
+    if (speed >= 0) {
+        m1pwm = speed;
+        m1dir = 1;
+    } else {
+        m1pwm = -speed;
+        m1dir = 0;
+    }
+}
+
+void ZumoShield::turn_left(float speed)
+{
+    left_motor(0);
+    right_motor(speed);
+}
+
+void ZumoShield::turn_right(float speed)
+{
+    left_motor(speed);
+    right_motor(0);
+}
+
+void ZumoShield::left(float speed)
+{
+    left_motor(-speed);
+    right_motor(speed);
+}
+
+void ZumoShield::right(float speed)
+{
+    left_motor(speed);
+    right_motor(-speed);
+}
+
+void ZumoShield::forward(float speed)
+{
+    if (speed == 0) {
+        left_motor(0);
+        right_motor(0);
+    } else {
+        left_motor(speed);
+        right_motor(speed);
+    }
+}
+
+void ZumoShield::backward(float speed)
+{
+    if (speed == 0) {
+        left_motor(0);
+        right_motor(0);
+    } else {
+        left_motor(-speed);
+        right_motor(-speed);
+    }
+}
+
+void ZumoShield::stop(int motor)
+{
+    if (motor == 1) {
+        stopLeft();
+    } else if (motor == 2) {
+        stopRight();
+    }
+}
+
+void ZumoShield::stopLeft()
+{
+    m2pwm = 0;
+    m2dir = 0;
+}
+
+void ZumoShield::stopRight()
+{
+    m1pwm = 0;
+    m1dir = 0;
+}
+
+void ZumoShield::stopAll()
+{
+    stopLeft();
+    stopRight();
+}
+
+/* TODO
+float ZumoShield::position()
+{
+    return output;
+}
+*/