MicroMaestro values on computer reboot

I am using a MicroMaestro connected to an RC servo in order to control monitor rotation in an arcade cabinet. The setup is working fine – when a game with a vertical or horizontal monitor orientation is launched, I run a batch file that calls the software and the monitor rotates appropriately.

In order to do this, I have set a fairly slow rate of turn for the servo, as the LCD is heavy and using full power would cause excessive torque. The result was that the monitor would “bounce” upon hitting its target, and end up out of true.

So, general usage is fine. But I have an issue that recurs every time the computer reboots. When it reboots, the speed and acceleration limits set in the Pololu software seem to be ignored. The monitor moves at maximum speed, bounces quite strongly, and ends up sitting at a diagonal angle. It also seems to think that this diagonal angle is actually horizontal.

This is a poorly balanced situation for the servo, which then buzzes mightily trying to hold the monitor in place. If I don’t get to it soon, I fear the servo will overheat and burn out. (The servo is quite happy holding the monitor at vertical and horizontal; it’s holding odd diagonals that are poorly balanced that give it trouble).

When this happens, I can generally fix it by running the vertical batch file followed by the horizontal one. If, however, I run the horizontal one first, a dialog box pops up informing me that smccmd has crashed.

I have set the default position for the servo to be the standard horizontal position. That certainly isn’t where it lands upon reboot, and it seems to ignore the speed limit that I have set in the software when trying to get to the default position.

Am I missing something in terms of how to adjust the settings? Is there some way to avoid this behavior?


It sounds like you are seeing the behavior described in the last question under the “FAQs” tab on the Maestro product page. As mentioned there, the Maestro does not have any way of knowing the servo’s position when it first starts up or reboots, so it cannot apply any speed or acceleration settings to the first target position commanded.

One way to counteract this might be to set the servo to a known position before rebooting and having the Maestro send that same target position when it first boots up. This way, the monitor would not move on startup since it should still be in the position it was in when you turned it off.

By the way, that sounds like a really neat project; when it is finished we would love to see it! You might consider posting more about it on the “Share Your Projects” section of this forum.