Control a DC motor via a standard H-bridge using a PwmOut pin to control speed and two DigitalOut pins to control direction. Can change pwm period on the PwmOut pin, and also brake high or low.

Dependents:   SimpleRover PIDRover IMURover incrementalencoder-pid-robot ... more

Files at this revision

API Documentation at this revision

Comitter:
aberk
Date:
Tue Sep 07 11:21:42 2010 +0000
Parent:
0:f05e09f8f5d9
Commit message:
Added functionality to brake high or low.

Changed in this revision

Motor.cpp Show annotated file Show diff for this revision Revisions of this file
Motor.h Show annotated file Show diff for this revision Revisions of this file
diff -r f05e09f8f5d9 -r c75b234558af Motor.cpp
--- a/Motor.cpp	Thu Sep 02 16:32:57 2010 +0000
+++ b/Motor.cpp	Tue Sep 07 11:21:42 2010 +0000
@@ -45,3 +45,16 @@
     _pwm.period(period);
 
 }
+
+void Motor::brake(int highLow){
+
+    if(highLow == BRAKE_HIGH){
+        _fwd = 1;
+        _rev = 1;
+    }
+    else if(highLow == BRAKE_LOW){
+        _fwd = 0;
+        _rev = 0;
+    }
+
+}
diff -r f05e09f8f5d9 -r c75b234558af Motor.h
--- a/Motor.h	Thu Sep 02 16:32:57 2010 +0000
+++ b/Motor.h	Tue Sep 07 11:21:42 2010 +0000
@@ -25,6 +25,9 @@
 
 #include "mbed.h"
 
+#define BRAKE_HIGH 1
+#define BRAKE_LOW  0
+
 /** Interface to control a standard DC motor 
  * with an H-bridge using a PwmOut and 2 DigitalOuts
  */
@@ -52,6 +55,15 @@
      * @param seconds - Pwm duty cycle in seconds.
      */
     void period(float period);
+    
+    /** Brake the H-bridge to GND or VCC.
+     * 
+     * Defaults to breaking to VCC.
+     *
+     * Brake to GND => inA = inB = 0
+     * Brake to VCC => inA = inB = 1
+     */
+    void brake(int highLow = BRAKE_HIGH);
 
 protected:
     PwmOut _pwm;