Controlling Servos Using the SSC-32 Servo Controller and Arduino Uno


Introduction: Controlling Servos Using the SSC-32 Servo Controller and Arduino Uno

About: I am an electrical engineer and an Arduino and electronics enthusiasts. I believe working with electricity should be fun as well as beneficial to engineers and the world at large. Twitter handle: @arduinoha...

There are two ways through which you can control servos using an SSC-32 servo controller. You can either do it directly from the lynx SSC-32 Terminal or via serial commands sent from an arduino board. Here, we are going to look at how to control servos using an SSC-32 and an arduino board.

Step 1: Connecting SSC-32 to Arduino Uno

In order to control the SSC-32 via arduino, you need to know how to connect the two boards first. In my case i am going to be controlling the SSC-32 via an arduino uno. Therefore, i should connect the transmitting pin (TX) of the arduino uno to the receiving pin (RX) of the SSC-32 and ground (GND) pins of the two boards as show in the diagrams.

In this case, the arduino sends serial commands to the SSC-32 servo controller, which in turn controls the servos. After successfully connecting and the arduino to theSSC-32 and powering the setup you can go ahead and write your code.

Step 2: Coding

The first thing you need to understand before coding is the way servo motors are controlled using the SSC-32 servo controller. Most servo motors rotate 180 degrees. In the SSC-32 programs, the position of the servo motors is not described in degrees as is in arduino. Instead it is referred to in terms of a number. The initial position (0 degrees) of the servo is assigned the position 500 while the furthest position which corresponds to 180 degrees is assigned the value 2500.

A typical line of code for the SSC-32 servo controller would be: #15 P1500 T500
  • # represents the pin number on the SSC-32 that the servo is connected to
  • P represents the position that the servo motor should rotate to
  • T represents the time that the servo should take to rotate to the desired position

Therefore, that line of code tells the servo connected to pin 15 to rotate to position 1500 in 500 milliseconds The commands are sent from the arduino board to the SSC-32 in a serial format.

Here is how you should code on the arduino IDE.
Serial.println(“#15 P1500 T500”);

This line of code sends the text #15 P1500 T500 to the SSC-32 servo controller, which is then decoded and causes the servo in question to move to the desired position. You can check this example code to understand more.

Step 3: Conclusion

For the code to work, you need to set the SSC-32 baud rate to 9600. Moreover, for some servos, the final position can be less than 2500. Therefore, if you notice that your servo motor is twitching every time it reaches its final position, reduce the final position to 2400 or 2300. Meanwhile you can learn more about the SSC-32 servo controller in my other posts.



    • Oil Contest

      Oil Contest
    • Clocks Contest

      Clocks Contest
    • Creative Misuse Contest

      Creative Misuse Contest

    8 Discussions


    1 year ago

    is this programming procedure is same for Bluetooth + USB 16 Servo Controller

    [RKI-1005 & RKI-1205]??

    sup. ive just built a hexapod with 3 DOF. with this code work as a building block?




















    voidsetup()//initializing serial communication baud rate


    Serial.begin(9600);//sets the baud rate at 9600 to match the one set on the SSC-32 board




    Serial.println(“#1 P500 T1000”) //turns the servo to the initial position in 1 second

    delay(1000);//delay for 1 second

    Serial.println(“#1 P2500 T1000”) //turns the servo to the final position in 1 second

    delay(1000);//delay for 1 second

    2 replies

    This code only moves the servo connected to pin 1 on the SSC-32 from the initial position to the final position. You have to send commands to the other motors for the hexapod to move

    thanks.. one more thing bro.. can i use any torobot rios or any other servo board terminal?

    Hi, the problem with the code is that the speech marks that enclose the commands which are being printed serially are not the correct ones. The ones on your code are curved speech marks. They are not recognized by the Arduino IDE. Replace them with straight speech marks as shown below.

    Change Serial.println(“#1 P500 T1000”);

    to Serial.println("#1 P500 T1000");

    Note the speech marks are different in both commands.

    1 reply

    here is the revised code, just incase:

    void setup(){



    void loop(){

    Serial.println("#1 P500 T1000");

    delay(1000); //delay for 1 second

    Serial.println("#1 P2500 T1000");

    delay(1000); //delay for 1 second


    Check whether you have connected the servo to the right pins on the SSC-32 shield. It should be connected to pin 1. Also make sure that you have connected the TX and RX pins of the arduino to the RX and TX pins of the SSC-32 respectively.

    If that does not work, Check if you have selected the right Baud rate (in this case 9600) on the SSC-32 and also that you have powered the channel you are using.

    1 reply

    actually i was talking about the link to the example is not working as i cant click on it