SSC Problem: Motors Don't Move and red LED

I’m having a problem getting my Pololu Micro Serial Servo Controller working. I’m using it with a Leaflabs Maple with the Pololu protocol. I’m not able to move any of my Hitec HS-645MG servos.
I’ve found the correct baud rate (based on LED feedback) but once I try to send bytes in the main loop I get a solid red LED and a flashing yellow LED. I’ve read the user’s guide and I’m sending the bytes as per the protocol (start byte, device ID, command, servo num, data1, data2).

Would anyone be able to tell me what a solid red LED with a flashing LED yellow specifically means?

Additional set up details: I only have the serial input wired. The controller and servos are powered from the same 6V regulated supply. The serial input from the Maple will be at 3.3V for high. The Maple’s max baud rate is 115200.
I’ve tried various things like changing the baud rate, different delays and powering the Pololu controller from the same source as the Maple (common ground). All these things had no influence.
Thanks,
Sean

void setup() { 
    Serial2.begin(38400);
    pinMode(29, OUTPUT); //LED for making sure program loaded correctly
    delay(1000);  
}

void loop() {
    
   unsigned char buff[6];
   
   buff[0]=0x80;//start byte
   buff[1]=0x01;//device id
   buff[2]=0x04;//command number
   buff[3]=0x01;//servo number
   buff[4]=0x00;//data1... arbitrary for testing
   buff[5]=0x0F;//data2...arbitrary for testing

   for(int i=0;i<6;i++){
      Serial2.print(buff[i],BYTE);
   }
digitalWrite(29, HIGH);
}

Hello.

Your post has several statements that make me think you might have some fundamental misunderstandings or bad approaches. For instance, what do you mean by “I’ve found the correct baud rate (based on LED feedback)” when you don’t know what the resulting LED pattern indicates? In any case, you should determine the appropriate baud rate and then possibly confirm you are actually sending what you think you are with an oscilloscope or similar tool. The solid red LED with flashing yellow means the servo controller thinks the baud rate is too slow. It looks like you’re trying to send stuff at 38400 bps, which would definitely not be too slow, so it would be nice to verify what you are sending; do you have access to an oscilloscope?

Other troubling statements are “I only have the serial input wired” and “powering the Pololu controller from the same source as the Maple (common ground)”. You definitely need to have the grounds connected for the serial input to mean anything, and connecting the grounds is not the same thing as using the same power source. But, you’re getting responses from the servo controller (based on the LEDs), so I think you’re actually doing something a little differently than you described.

Finally, your “arbitrary for testing” position you are sending is not a valid position; if the rest of your system were to work, it would probably lead to a damaged servo.

I recommend that you start with the Mini SSC II protocol, which is simpler (note that you’ll have to use a lower baud rate), try to confirm what your serial line is actually doing, and make sure your electrical connections make sense. If you are not sure or have no progress, you can post a picture or schematic of your setup here.

- Jan

Thanks for the response. I don’t think I described my problem very well…

I’ve made sure my grounds are connected and have corrected the position value.

Here’s what’s happening now: Regardless of the baud rate (a number of tested baud rates as low as 9600) I get a red LED and flashing green LED when I turn the controllers on. But when I connect the reset pin to ground for a moment, my servo goes to the correct position. So after I ground the reset pin momentarily, everything works as expected. I’m wondering what might be causing the need for the reset? Is there some way I can avoid this? Routing another wire to my microcontroller is problematic in my set up.

Thanks,
Sean

If everything works as expected after a reset, you probably have some unexpected junk on your serial line during power-up. The servo controller needs the first byte to determine the baud rate, so there is no good solution if you cannot control the reset line. Why are you not using the newer micro maestro, which lets you fix the baud rate and has a lot of other improvements?

- Jan