Source code phoenix work with old device?

Hallo there,
First Im sorry my english not good,

I have hexapod Phoenix Set,
-Ps2 lyxnmotion
And arduino Uno

In 2011 I run this hexapod work perfect with old source arduino IDE 0,22 from old forum Lyxnmotion

Now I try to upload new source with new arduino but not working,

-already check SSC32 with LyxnTerm and update with new firmware 2-04GP.abl
And all work perfect

In wiring

I use 9v battery for powering arduino and ssc32
For servos I use lippo 7,4v

Ps2 to arduino I use same pin in the source code.
RxTx 12/13.
BaudRate jumper ssc32 I set 9600

I have BB II atom pro but I dont know why IDE Micro Basic Studio cant detect, that why I use Arduino Uno

Here my BBII


after update ssc32 firmware to 2.07egp and
when I press START button on my PS2, my hexapod run by self, but I didnt press anything.
all new battery

Welcome to the RobotShop Community. That’s certainly an older Phoenix if you’re running a Basic Atom and SSC-32. The guide can be found here:

The Bot Board 2 guide:
Program to test the BB2:

There’s also user guides etc here (under Microcontrollers):

If you switch to the Arduino Uno (which replaces the Bot Board 2), then you’ll need to ensure you have your wiring correct as there is no specific guide.

Can’t quite tell which servos are installed, but keep in mind most run best at 6V, not 7.4V. You need 9V power to the SSC-32 and to the BotBoard 2. With older robots, you really need to ensure wiring is correct, as well as the Baud rate selected on the SSC-32 (via jumpers). Normally the software serial operates at 38,400 not 9600.

1 Like

Hi Sir
Thank you for your reply

Update: now all controller success to upload the program,

Before I post here, I already follow instuction guide in lyxnmotion website.
now after upload program to controller arduino uno or BB2 bab 28 without errors ( I try both )
I got some problem, when I press Start in my stick PS2 the hexapod auto walk weird, this my stick error or what?
normal when press start hecapod will stand right?

about the battery I use

and 9v

thank you sir

I try upload video soon

1 Like

This error what Im talking above

1 Like

Normally pressing start should not make the robot walk, only stand, though I have never really looked at the code for the Basic Atom. The PS2 Controls table 17 seems to indicate this as well.

You might try the Arduino-based code rather than the Bot Board 2 since it’s more recent. Keep in mind you’ll need common ground with the PS2 receiver and the SSC-32.

This might be an issue with any of the following:

  • PS2 wiring
  • Wiring between the microcontroller and the SSC-32
  • Connections between the servos and the SSC-32
  • Where the servos are connected to the SSC-32 (which pins)
  • Jumper settings

You might be able to more easily get the robot up and running if you use a BotBoarduino. Not because the Bot Board 2 or Uno are not functional, but it’s a more recent board and easier to troubleshoot than one which is ~10 years old.

1 Like

Hi Sir,

Ihve already trying use Bot Board 2 or arduino uno,
already put Phoenix or A-Pod code from Basic Atom, and Phoenix Code from arduino to UNO, I try both, but get some result, when press start robot auto walk hmm or maybe my PS2 error

About wiring I follow Guides from lyxnmotion website and i’ve recheck make sure nothing wrong

maybe tomorrow I try other ssc-32

If you can provide some clear photos of the SSC-32 and Bot Board 2 clearly showing all of the wiring, jumpers etc., perhaps we can spot something wrong. Even the smallest issue (like a missing jumper on one of the two boards, or a badly wired cable) can create an issue.

1 Like

Here some image wiring ssc to microcontroller ps2

arduino ssc32
RxTxGnd 12-13-Gnd

Arduino ps2
5v 5v

Basic atom ssc32
Gnd. Gnd
10. Tx
11. Rx

Basic atom Ps2
P12. DAT
P13. CMD
P14. ATT
P15. CLK

1 Like

Can’t tell what the first photo shows since the Arduino Uno is not connected at all.
You have a blue and yellow wire going to … something, where the wires are really improperly connected and bare. Don’t know what that is.
The servos you are using are not Hitec, nor are the mounting hole patterns, so this is not a real “Lynxmotion” Phoenix kit, except for the electronics.
This also means zeroing the servos for the walking gait will be different than on the Phoenix.

In your last video, you powered the robot and the legs seemed to go to the right position… did you try using the joysticks?

Do you have the 9V battery also connected to VL of the Bot Board 2? It’s cut off from the photo.

Not sure how much support we can provide given it’s a custom robot and the electronics are almost 10 years old.

Thank for your help,

Yesterday I buy a new ssc32 v2 in local market (I need fast) but still got same problem,

Today I change the remote with PS2 Wireless regular,
Now my robot fixed, not running when press start button.


1 Like

Sir I got another problem

When I press Start button, this robot stand to tall

You can check on my video 1

And after I try to edit #define CHexInitY 25 to #define CHexInitY 80
The robot can stand normal, but after I press start to off the legs fall down
Video 2

This error from code or my mechanical problem?
Here some image wiring

What I hve done is
All battery already full 9v and nimh 6v
I use code from LM website

Already follow step by step to calibrate move all servos adjust to 1500 and centering same as guide

My hexapod can walk, all command from stick work perfect, just a problem standing and on off.

Sorry my english not good


1 Like

here my Hex_cfg.h

> //====================================================================
//Project Lynxmotion Phoenix
//    This is the hardware configuration file for the Hex Robot.
//    This version of the Configuration file is set up to run on the
//    Lynxmotion BotboardDuino board, which is similiar to the Arduino Duemilanove
//    This version of configuration file assumes that the servos will be controlled
//    by a Lynxmotion Servo controller SSC-32 and the user is using a Lynxmotion 
//    PS2 to control the robot.
//Date: March 18, 2012
//Programmer: Kurt (aka KurtE)
//NEW IN V1.1 (2013-05-17)
//   - Support for Arduino Pro Mini on Bot Board (originally for Basic Atom Pro)
//NEW IN V1.0
//   - First Release

// Define other optional components to be included or not...

//uncomment the following line to activate 4 DoF
//#define c4DOF

//comment if terminal monitor is not required

//uncomment the board you want to use
#define __BOTBOARDUINO__    //botboarduino board
//#define __BOTBOARD_ARDUINOPROMINI__  //arduino pro mini on botboard (originally for BasicAtomPro)

#ifdef OPT_TERMINAL_MONITOR   // turning off terminal monitor will turn these off as well...
#define OPT_SSC_FORWARDER  // only useful if terminal monitor is enabled
#define OPT_FIND_SERVO_OFFSETS    // Only useful if terminal monitor is enabled


// Which type of control(s) do you want to compile in
#define DBGSerial         Serial

#if defined(UBRR1H)
#define SSCSerial         Serial1

#define USEPS2

// CHR-3
#define USE_SSC32
//#define	cSSC_BINARYMODE	1			// Define if your SSC-32 card supports binary mode.


// Warning I will undefine some components as the non-megas don't have enough memory...

#define cSSC_BAUD  38400   //SSC32 BAUD rate

//[Botboarduino Pin Numbers]
  #define SOUND_PIN       7   // Botboarduino JR pin number
  #define PS2_DAT         10        
  #define PS2_CMD         11
  #define PS2_SEL         12  // On the PS2 receiver this pin may be called ATT (attention)
  #define PS2_CLK         13
// If we are using a SSC-32 then:
// If were are running on an Arduino Mega we will use one of the hardware serial port, default to Serial1 above.
// If on Non mega, if the IO pins are set to 0, we will overload the hardware Serial port 
// Else we will user SoftwareSerial to talk to the SSC-32
  #define cSSC_OUT       8   //Output pin for Botboard - Input of SSC32 (Yellow)
  #define cSSC_IN        9   //Input pin for Botboard - Output of SSC32 (Blue)

  #define SOUND_PIN      11   // Bot Board JR pin number (with Arduino Pro Mini plugged)
  #define PS2_DAT        13     //14     
  #define PS2_CMD        11     //15
  #define PS2_SEL        10     //16
  #define PS2_CLK        12     //17
// If we are using a SSC-32 then:
// If were are running on an Arduino Mega we will use one of the hardware serial port, default to Serial1 above.
// If on Non mega, if the IO pins are set to 0, we will overload the hardware Serial port 
// Else we will user SoftwareSerial to talk to the SSC-32
  #define cSSC_OUT        8   //Output pin for Botboard - Input of SSC32 (Yellow)
  #define cSSC_IN         7   //Input pin for Botboard - Output of SSC32 (Blue)

#define cRRCoxaPin      0   //Rear Right leg Hip Horizontal
#define cRRFemurPin     1   //Rear Right leg Hip Vertical
#define cRRTibiaPin     2   //Rear Right leg Knee
#define cRRTarsPin      3   // Tar

#define cRMCoxaPin      4   //Middle Right leg Hip Horizontal
#define cRMFemurPin     5   //Middle Right leg Hip Vertical
#define cRMTibiaPin     6   //Middle Right leg Knee
#define cRMTarsPin      7   // Tar

#define cRFCoxaPin      8   //Front Right leg Hip Horizontal
#define cRFFemurPin     9   //Front Right leg Hip Vertical
#define cRFTibiaPin     10   //Front Right leg Knee
#define cRFTarsPin      11   // Tar

#define cLRCoxaPin      16   //Rear Left leg Hip Horizontal
#define cLRFemurPin     17   //Rear Left leg Hip Vertical
#define cLRTibiaPin     18   //Rear Left leg Knee
#define cLRTarsPin      19   // Tar

#define cLMCoxaPin      20   //Middle Left leg Hip Horizontal
#define cLMFemurPin     21   //Middle Left leg Hip Vertical
#define cLMTibiaPin     22   //Middle Left leg Knee
#define cLMTarsPin      23   // Tar

#define cLFCoxaPin      24   //Front Left leg Hip Horizontal
#define cLFFemurPin     25   //Front Left leg Hip Vertical
#define cLFTibiaPin     26   //Front Left leg Knee
#define cLFTarsPin      27   // Tar

#define cRRCoxaMin1  -260  //Mechanical limits of the Right Rear Leg, decimals = 1
#define cRRCoxaMax1 740
#define cRRFemurMin1  -1010
#define cRRFemurMax1  950
#define cRRTibiaMin1  -1060
#define cRRTibiaMax1  770

#define cRMCoxaMin1 -530  //Mechanical limits of the Right Middle Leg, decimals = 1
#define cRMCoxaMax1 530
#define cRMFemurMin1  -1010
#define cRMFemurMax1  950
#define cRMTibiaMin1  -1060
#define cRMTibiaMax1  770

#define cRFCoxaMin1 -580  //Mechanical limits of the Right Front Leg, decimals = 1
#define cRFCoxaMax1 740
#define cRFFemurMin1  -1010
#define cRFFemurMax1  950
#define cRFTibiaMin1  -1060
#define cRFTibiaMax1  770

#define cLRCoxaMin1 -740  //Mechanical limits of the Left Rear Leg, decimals = 1
#define cLRCoxaMax1 260
#define cLRFemurMin1  -950
#define cLRFemurMax1  1010
#define cLRTibiaMin1  -770
#define cLRTibiaMax1  1060

#define cLMCoxaMin1 -530  //Mechanical limits of the Left Middle Leg, decimals = 1
#define cLMCoxaMax1 530
#define cLMFemurMin1  -950
#define cLMFemurMax1  1010
#define cLMTibiaMin1  -770
#define cLMTibiaMax1  1060

#define cLFCoxaMin1 -740  //Mechanical limits of the Left Front Leg, decimals = 1
#define cLFCoxaMax1 580
#define cLFFemurMin1  -950
#define cLFFemurMax1  1010
#define cLFTibiaMin1  -770
#define cLFTibiaMax1  1060

//Universal dimensions for each leg in mm
#define cXXCoxaLength     29  // This is for CH3-R with Type 3 legs
#define cXXFemurLength    76
#define cXXTibiaLength   106
#define cXXTarsLength     85    // 4DOF only...

#define cRRCoxaLength     cXXCoxaLength	    //Right Rear leg
#define cRRFemurLength    cXXFemurLength
#define cRRTibiaLength    cXXTibiaLength
#define cRRTarsLength	  cXXTarsLength	    //4DOF ONLY

#define cRMCoxaLength     cXXCoxaLength	    //Right middle leg
#define cRMFemurLength    cXXFemurLength
#define cRMTibiaLength    cXXTibiaLength
#define cRMTarsLength	  cXXTarsLength	    //4DOF ONLY

#define cRFCoxaLength     cXXCoxaLength	    //Rigth front leg
#define cRFFemurLength    cXXFemurLength
#define cRFTibiaLength    cXXTibiaLength
#define cRFTarsLength	  cXXTarsLength    //4DOF ONLY

#define cLRCoxaLength     cXXCoxaLength	    //Left Rear leg
#define cLRFemurLength    cXXFemurLength
#define cLRTibiaLength    cXXTibiaLength
#define cLRTarsLength	  cXXTarsLength    //4DOF ONLY

#define cLMCoxaLength     cXXCoxaLength	    //Left middle leg
#define cLMFemurLength    cXXFemurLength
#define cLMTibiaLength    cXXTibiaLength
#define cLMTarsLength	  cXXTarsLength	    //4DOF ONLY

#define cLFCoxaLength     cXXCoxaLength	    //Left front leg
#define cLFFemurLength    cXXFemurLength
#define cLFTibiaLength    cXXTibiaLength
#define cLFTarsLength	  cXXTarsLength	    //4DOF ONLY
#define cRRCoxaAngle1   -600   //Default Coxa setup angle, decimals = 1
#define cRMCoxaAngle1    0      //Default Coxa setup angle, decimals = 1
#define cRFCoxaAngle1    600      //Default Coxa setup angle, decimals = 1
#define cLRCoxaAngle1    -600   //Default Coxa setup angle, decimals = 1
#define cLMCoxaAngle1    0      //Default Coxa setup angle, decimals = 1
#define cLFCoxaAngle1    600      //Default Coxa setup angle, decimals = 1

#define cRROffsetX -43   //Distance X from center of the body to the Right Rear coxa
#define cRROffsetZ 82    //Distance Z from center of the body to the Right Rear coxa
#define cRMOffsetX -63  //Distance X from center of the body to the Right Middle coxa
#define cRMOffsetZ 0      //Distance Z from center of the body to the Right Middle coxa
#define cRFOffsetX -43  //Distance X from center of the body to the Right Front coxa
#define cRFOffsetZ -82 //Distance Z from center of the body to the Right Front coxa

#define cLROffsetX  43    //Distance X from center of the body to the Left Rear coxa
#define cLROffsetZ  82    //Distance Z from center of the body to the Left Rear coxa
#define cLMOffsetX  63    //Distance X from center of the body to the Left Middle coxa
#define cLMOffsetZ  0       //Distance Z from center of the body to the Left Middle coxa
#define cLFOffsetX  43    //Distance X from center of the body to the Left Front coxa
#define cLFOffsetZ -82 //Distance Z from center of the body to the Left Front coxa

#define cHexInitXZ   105
#define CHexInitXZCos60  69// COS(60) = .5
#define CHexInitXZSin60  91   // sin(60) = .866
#define CHexInitY  80

#define cRRInitPosX     CHexInitXZCos60      //Start positions of the Right Rear leg
#define cRRInitPosY     CHexInitY
#define cRRInitPosZ     CHexInitXZSin60

#define cRMInitPosX     cHexInitXZ      //Start positions of the Right Middle leg
#define cRMInitPosY     CHexInitY
#define cRMInitPosZ     0

#define cRFInitPosX     CHexInitXZCos60      //Start positions of the Right Front leg
#define cRFInitPosY     CHexInitY
#define cRFInitPosZ     -CHexInitXZSin60

#define cLRInitPosX     CHexInitXZCos60      //Start positions of the Left Rear leg
#define cLRInitPosY     CHexInitY
#define cLRInitPosZ     CHexInitXZSin60

#define cLMInitPosX     cHexInitXZ      //Start positions of the Left Middle leg
#define cLMInitPosY     CHexInitY
#define cLMInitPosZ     0

#define cLFInitPosX     CHexInitXZCos60      //Start positions of the Left Front leg
#define cLFInitPosY     CHexInitY
#define cLFInitPosZ     -CHexInitXZSin60

//[Tars factors used in formula to calc Tarsus angle relative to the ground]
#define cTarsConst	720	//4DOF ONLY
#define cTarsMulti	2	//4DOF ONLY
#define cTarsFactorA	70	//4DOF ONLY
#define cTarsFactorB	60	//4DOF ONLY
#define cTarsFactorC	50	//4DOF ONLY

Your robot is physically different from the Lynxmotion hexapods (servos are installed at different angles). You need to install and calibrate the servos so they start at the same angles as Lynxmotion robots, and also change the dimensions of each joint within the code.

1 Like

Yup angles femur same with A-pod

Can you info to me, which part line code should I change?

Thanks you Sir

If I use Botboard atom pro and use Apod code should be okey right?

The hardware (frame and setup) for the robot you have is unknown to us, so we cannot say if the dimensions etc. need to be updated. You’ll also need to center and calibrate your servos like the instructions for the Phoenix. It’s been a while since I looked at the Phoenix code, but the sections about dimensions should be commented somewhere.

My chassis is Phoenix from LM, I buy 2011 exclude servos,
When I get the stuff, I move a house and no time for build, so a couple month ago, I found back In my basement.

I change little bit in femur like A-pod,

Today I change back 1 front leg to Phoenix design,

The problem is when I press turn off button the leg go down direction, (same like before)

I did calibration before install the leg.

Thank You Sir