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:
Diff: Maestro.cpp
- Revision:
- 3:1c654893354d
- Parent:
- 1:c14b79e3f39b
- Child:
- 4:ef4d23c023ea
--- a/Maestro.cpp Sun Jan 05 10:52:17 2014 +0000 +++ b/Maestro.cpp Sun Jan 05 16:46:14 2014 +0000 @@ -9,21 +9,21 @@ #include "Maestro.h" -Maestro::Maestro(PinName tx, PinName rx) : serial(tx, rx) +Maestro::Maestro(PinName tx, PinName rx) : serial(tx, rx), pc(USBTX, USBRX) { serial.baud(9600); serial.format(8, SerialBase::None, 1); //8N1 - char command[1]; - command[0] = BAUD_RATE_IDICATION; - serial.puts(command); +} + +void Maestro::init() +{ + serial.putc(BAUD_RATE_IDICATION); } -void Maestro::setTarget(int channel, int target) +void Maestro::setTarget(uint8_t channel, uint16_t target) { - char command[4]; - command[0] = SET_TARGET; - command[1] = channel; - command[2] = target & 0x7F; - command[3] = (target >> 7) & 0x7F; - serial.puts(command); + serial.putc(SET_TARGET); + serial.putc(channel); + serial.putc(target & 0x7F); + serial.putc((target >> 7) & 0x7F); } \ No newline at end of file