Micro Serial Servo Driver for Arduino

Hi all. I’m building a bot with a buddy of mine and wrote a driver/API for interfacing with the Pololu Micro Serial Servo controller (part #207) via an Arduino. I’m using an ATMega256, but it just needs a serial connection.

Written for Pololu mode instead of Mini SSC II so you can take advantage of all the neat features.

It’s licensed CC3, so feel free to use it in whatever.

github.com/wojnosystems/pololu- … ololu-mode

We’ve successfully used this library to control 8 servos for our 4 legged robot. Believe me, it makes life much easier.

I’ve spent a good deal of time writing the documentation in the .h file:
github.com/wojnosystems/pololu- … ialServo.h

So feel free to poke around there if you get stuck.

Happy building!


We added your Github page to the recommended links part of the product page. Thanks for your contribution.

By the way, we are moving away from these controllers and recommend new designs use the Maestro family of servo controllers.

- Ryan

is there a recommended Arduino library for the maestro family of serial drivers ?

Hello, ajoslin103.

Unfortunately, I do not know about an Arduino library for Maestros. Searching for Maestro and Arduino turned up this sample code for a hexapod that implements a set-target command.

Details about the serial interface can be found in the Maestro user’s guide.

- Ryan


then I guess it’s up to me. I’ll post the results here.

(my frustration is that the Serial library on Arduino can rotate this servo full 180 degrees while I can only do 90 degrees with the Maestro Micro 6)

I saw that the Micro Serial could choose a direction of rotation as well as a few other options that seemed not to be part of the Maestro docs - can the Maestro handle all params and commands that the Micro Serial did ?


You should be able to get the full range of motion out of your servo using the micro Maestro. We have a Maestro FAQ answer about how to do that. The Maestro has a different set of commands and parameters than the micro serial servo controller. In terms of features, the Maestro is better in almost every way compared to the micro serial servo controller, but it is not a drop in replacement.

We would love to see the code you come up with!

- Ryan

yes, I eventually fired up an Ubuntu image on Virtual Box and used it to program the maximum ranges on the Maestro – I then limit the signals in software.

Is it possible to program the range via TTL ?

No, it is not possible to change the range via TTL. That is a configuration parameter, and configuration parameters can only be changed through USB.

- Ryan

that’s going to be a bit of a PITA when we are into production of this device (which is going to have 4-6 maestro’s per unit)

will we be able to buy custom configured Maestro’s if we buy them in bulk ?

the custom config would be to have all channels set to a max range, like 500-2500 (as I’m constraining the actual values sent in other code based on a library of known servo’s)

otherwise my options seem to be:

  1. attach and configure each and every maestro via the Maestro Control Center – which is going to result in some amount of errors as hu-maans would be doing the work.

  2. write code to talk to the devices via usb-com port to set all channels to maximum range, then a hu-maan would plug in a device & wait for the computer to say “next!”

Yep, that does sound like a pain. We designed it that way so messed up/noisy TTL commands cannot alter the configuration of the device. It might be possible to do a custom order, if you want to go that route you would need to email us to work out the details. However, I strongly recommend going with your option 2 though. You should be able to write a couple of lines in a scripting language (like BASH or Batch) that uses usccmd, the command line program, which is installed along with the Maestro Control Center.

- Ryan

Yes, I was getting noise on the TTL (I think) that was causing erratic servo motions

Can I turn on/off CRC using a TTL command ? Or is that also only via the Control Center ?


No, whether or not it uses CRC is a configuration parameter. It can only be changed via the Control Center, or other USB programs (e.g. usccmd).

- Ryan

Hi Ryan,

I’m ready to add the CRC code - is there a c/c++ sample in the “library” anywhere ?


We have some example code in the Simple Motor Controller user’s guide section named “CRC Computation in C” that should work.

- Ryan