Library for Pololu Maestro Servo Controller http://www.pololu.com/docs/0J40

Library for Pololu Maestro Servo Controller

Library docs: https://developer.mbed.org/users/kochansky/code/Maestro/docs/f374c7b60318/classMaestro.html

Example usage:

#include "mbed.h"
#include "Maestro.h"

Maestro maestro(PTC4,PTC3);

int main()
{
    maestro.setBaudRate(9600);

    // limit speed for each servo
    for (uint8_t i = 0; i < 17; i++) {
        maestro.setSpeed(i, 10);
    }

    while (true) {
       // set servo on channel 0 to 90 degrees
       maestro.setServoAngle(0, 90);
       wait(2);

        // set servo on channel 0 to 45 degrees
       maestro.setServoAngle(0, 45);
       wait(2);
    }
}

Serial commands based on manual: http://www.pololu.com/docs/0J40/5.e

Device pinout:

/media/uploads/kochansky/maestro.jpg

Revision:
3:1c654893354d
Parent:
2:39356b408262
Child:
4:ef4d23c023ea
--- a/Maestro.h	Sun Jan 05 10:52:17 2014 +0000
+++ b/Maestro.h	Sun Jan 05 16:46:14 2014 +0000
@@ -15,16 +15,16 @@
 /**
  * Compact Protocol Command Bytes
  */
-#define SET_TARGET 0x84;
-#define SER_MULTUPLE_TARGETS 0x9F;
-#define SET_SPEED 0x87;
-#define SET_ACCELERATION 0x89;
-#define SET_PWM 0x8A;
-#define GET_POSITION 0x90;
-#define GET_MOVING_STATE 0x93;
-#define GET_ERRORS 0xA1;
-#define GO_HOME 0xA2;
-#define BAUD_RATE_IDICATION 0xAA;
+#define SET_TARGET 0x84
+#define SER_MULTUPLE_TARGETS 0x9F
+#define SET_SPEED 0x87
+#define SET_ACCELERATION 0x89
+#define SET_PWM 0x8A
+#define GET_POSITION 0x90
+#define GET_MOVING_STATE 0x93
+#define GET_ERRORS 0xA1
+#define GO_HOME 0xA2
+#define BAUD_RATE_IDICATION 0xAA
 
 /**
  * Pololu Maestro Servo Controller
@@ -42,13 +42,15 @@
      */
     Maestro(PinName tx, PinName rx);
 
+    void init();
+
     /**
      * Sets the target of a channel to a specified value
      *
      * @param channel - number a servo channel
      * @param target - the pulse width to transmit in units of quarter-microseconds
      */
-    void setTarget(int channel, int target);
+    void setTarget(uint8_t channel, uint16_t target);
 
     //void setMultipleTargets(int* channels, int* targets);
 
@@ -71,6 +73,7 @@
 private:
 
     Serial serial;
+    Serial pc;
 };
 
 #endif // Maestro
\ No newline at end of file