BotBoarduino and SSC-32

Hello! I’ve 2 questions about BotBoarduino and SSC-32.
How I can connect the BotBoarduino to a SSC-32 servocontroller?
How I can program the BotBoarduino to work with the SSC-32?
Thanks!

To put it simply, Yes. Yes you can.

To control the SSC-32 from a BotBoarduino you simply use either the hardware serial port or the softwareserial library and send out Ascii commands defined in the SSC-32 manual.

Programming the Botboarduino will be the same as programming a Duemilanove. There are countless tutorials for doing this on the web. Go to the Arduino website. Here is an example of how to connect the Botboarduino to the SSC-32.

lynxmotion.com/images/html/build99f.htm

When this tutorial will be ready?

Thanks.

Confusion! Why are you quoting something written somewhere else here? :unamused: The post directly above yours states the tutorial is ready… Now.

I quote it because it’s written in the faq of BotBoarduino to use it with the Phoenix.
However, to use all servos on the SSC-32 with BotBoarduino, there is a specific library? Or I can use the standard servo.h library for Arduino?

When quoting random stuff it would be a big help if you would mention where it was quoted from…

There is no library. You simply send commands via serial data from the Arduino to the SSC-32.

So it’s just sending simple serial ascii commands. Look here for more information on the SSC-32 commands.
lynxmotion.com/s-4-electroni … .aspx#serv

The arduino servo library is only used when the arduino is controlling the servo directly.

Have you looked at the tutorial?

This is a good example? LINK

Here’s a perfect example of a function to control a single servo to a connected SSC-32

void setup()
{
    Serial.begin(38400); //Most reliable baud rate for BotBoarduino + SSC-32
}

//Move command syntax
//#<s> P<p> T<t> <cr>
//s is number of servo
//p is position in uS (500 - 2500)
//t is the time for the move to take is uS
void moveServo(byte servo, int pos, int time)
{
    Serial.print("#");
    Serial.print(servo);
    Serial.print(" P");
    Serial.print(pos);
    Serial.print(" T");
    Serial.println(time);
    delay(time); //force Arduino to wait for the move to complete
}

void loop()
{
    moveServo(0, 2000, 500); //Move servo 0 to 2000uS in 500uS
    moveServo(0, 1000, 2000); //Move servo 0 to 1000uS in 2000uS
}

For information on hooking the boards together please direct your face to These Great Pictures

Thank you for the example!

A question, about the position. It’s in uS, ok, but for example, 90°=??uS.

lynxmotion.com/images/html/servo01.htm

moveServo(0, 2000, 500); //Move servo 0 to 2000uS in 500uS From 0 to 180°
moveServo(0, 1000, 2000); //Move servo 0 to 1000uS in 2000uS From 180° to 0

It’s right?

I think bottom line you need to send the ssc-32 the same commands using the same command format listed in the ssc-32 user’s manual. Don’t confuse the arduino servo control format and the ssc-32 command format. With very little coding you should be able to make some arduino test code that can be used with the arduino serial monitor to have the arduino conrtrol the ssc-32. With the ssc-32 rx pin conected to the arduino serial tx pin and the ssc-32 and arduino grounds connected, the below simple code should allow you to input a command like #0p1500 in the arduino serial monitor and have the ssc-32 move servo 0 to the 1500 position. This assumes you have the ssc-32 setup properly for operating a servo.

// zoomkat 7-30-11 serial I/O string test
// type a string in serial monitor. then send or enter
// for IDE 0019 and later

String readString;

void setup() {
  Serial.begin(9600);
  Serial.println("serial test 0021"); // so I can keep track of what is loaded
}

void loop() {

  while (Serial.available()) {
    delay(2);  //delay to allow byte to arrive in input buffer
    char c = Serial.read();
    readString += c;
  }

  if (readString.length() >0) {
    Serial.println(readString);

    readString="";
  } 
}

Zoomkat, The program I wrote does control the SSC-32. The function moveServo prints out the serial commands.

0° == 500uS
90° == 1500uS
180° == 2500uS

So moveServo(0, 2000, 500); moves servo number 0, to position 2000uS(135°) in 500mS(.5 seconds).

Excuse me but I don’t understand…

The servo that you refer in your example is a normal range or a extended range?

You have written:

And now:

500ms or 500Us?

When in doubt RTFM.

From the online SSC-32 manual.

Time in mS for the entire move, affects all channels, 65535 max (Optional)

500mS = 0.500 seconds…