Rate Control with Micro Maestro and Continuous Rotation Servos

I am using this library (https://github.com/FRC4564/Maestro) to write serial commands to the 6-channel Micro Maestro, driving a continuous rotation servo (I’ve used it with no problems to control a 180-degree servo in the past). When I set the target in the Control Center, I am able to set values around 1500 that vary the speed and direction of the servo. However, when I call setTarget through this library, any positive number sets the target to the max (2000), and any negative number sets it to the min (992), according to the control center.

From what I can tell, the setTarget command string being sent to the maestro is correct–Is there something different about how the Control Center sets the target that allows for rate control, or is there a setting that I need to change on the controller to get the same behavior using this library?

Thanks for any help!


It sounds like you might be using the setTarget command with negative numbers, which I suspect is causing the problem. The setTarget command should be given with two arguments: the servo channel number the target value. The target value should be in units of quarter microseconds. The default range of a Maestro servo channel is 992 to 2000 in microseconds as shown in the “Status” tab of the Maestro Control Center, like you mentioned. To convert the target to quarter microsecond, you need to multiply it by 4, which makes the default range of appropriate target values 3968 to 8000.

If that does not fix the problem, could you post the smallest complete code you can that demonstrates the problem?