Phoenix code running on an Arduino Mega with an SSC-32

Thanks for the update Kurt. I’ll see if can replace the BB2 on my LM A-Pod with the Botboarduino soon. It’s been a while…

zenta …!

:laughing: Yeah, I’m still alive…

Hello

I bought a hexapod Robot with Miniservo mg90s. I have ssc32 v2 and arduino Mini pro with ps2 wireless control. I ran arduino code for Phoenix and it didn’t work. I tested the ps2 control and work. Some times moves one leg up & down or left & right. the ps2 connects to
PS2_DAT Α0
PS2_CMD Α1
PS2_SEL Α2
PS2_CLK Α3

and D9 To RX ssc32 and D10 to TX ssc32 (i have tried the opposite)

ssc32 has firmware 2.02GP and I have made a newest version and shows me this message.Please help me !Is there the possibillity of having problem because of the firmware ?

imageshack.com/i/1qg8g8j

Again not sure what source code base you are using, but if the one off of Lynxmotion github (or mine as well), you can get most of the code to work without updating the firmware. Simply go into the Hex_Cfg.h file and look for a line: #define cSSC_BINARYMODE 1
And comment it out… This will turn off the code that tries to use the SSC with binary commands.

As for the updating of the firmware on the SSC-32 failing. Did not see picture of actual SSC-32, so did not see jumpers and the like. But typical things that make firmware updates not work, include: power, and the communication port not proper. It will only update the firmware at the baud rate 115200. Both the Software and the board (both baud shunts need to be installed) need to be set to this.

my jumpers is to 115200 but i cant upgrade my ssc32. i find a line: #define cSSC_BINARYMODE 1 but is out of comment. i have this code Lynxmotion-3DOF-4DOF-Hex-fc0154a from github … how turn binary commands?

this is my hex_Cfg.h

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

//[SERIAL CONNECTIONS]

// Warning I will undefine some components as the non-megas don’t have enough memory…
//#undef OPT_FIND_SERVO_OFFSETS

#define cSSC_BAUD 38400 //SSC32 BAUD rate

//--------------------------------------------------------------------
//[Botboarduino Pin Numbers]
#ifdef BOTBOARDUINO
#define SOUND_PIN 5 // Botboarduino JR pin number
#define PS2_DAT 6
#define PS2_CMD 7
#define PS2_SEL 8
#define PS2_CLK 9
// 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 12 //Output pin for Botboard - Input of SSC32 (Yellow)
#define cSSC_IN 13 //Input pin for Botboard - Output of SSC32 (Blue)
#endif

#ifdef BOTBOARD_ARDUINOPROMINI
#define SOUND_PIN 11 // Bot Board JR pin number (with Arduino Pro Mini plugged)
#define PS2_DAT 14
#define PS2_CMD 15
#define PS2_SEL 16
#define PS2_CLK 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 10 //Output pin for Botboard - Input of SSC32 (Yellow)
#define cSSC_IN 9 //Input pin for Botboard - Output of SSC32 (Blue)
#endif

change: #define cSSC_BINARYMODE 1 // Define if your SSC-32 card supports binary mode.
to: //#define cSSC_BINARYMODE 1 // Define if your SSC-32 card supports binary mode.

Recompile and download…

I did this but keep getting the error:

phoenix_driver_ssc32.cpp: In member function ‘void ServoDriver::CommitServoDriver(word)’:
phoenix_driver_ssc32.cpp:268: error: ‘ServoMoveTime’ was not declared in this scope

I know I mentioned a few times in the past that they should change ServoMoveTime to wMoveTime:

    SSCSerial.println(wMoveTime, DEC);

:confused: no work, i click the start and move one leg … only this :S

now my config is this:

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

//[SERIAL CONNECTIONS]

#ifdef BOTBOARD_ARDUINOPROMINI
#define SOUND_PIN 11 // Bot Board JR pin number (with Arduino Pro Mini plugged)
#define PS2_DAT A0
#define PS2_CMD A1
#define PS2_SEL A2
#define PS2_CLK A3
// 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 9 //Output pin for Botboard - Input of SSC32 (Yellow)-----------------> to RX
#define cSSC_IN 10 //Input pin for Botboard - Output of SSC32 (Blue)-------------------> to TX
#endif

and change

ServoMoveTime to wMoveTime:

i have this code
//NEW IN V1.1 (2013-05-17)
// - Support for Arduino Pro Mini on Bot Board (originally for Basic Atom Pro)

:S :S :S :S

Workkkk… :slight_smile:))))))))))))

what’s the difference with the binary??

a question yet, I have this hexapod aliexpress.com/item/Aluminiu … 93218.html

and run this code
//=============================================================================
//Project Lynxmotion Phoenix
//Description: Phoenix software
//Software version: V2.0
//Date: 29-10-2009
//Programmer: Jeroen Janssen [aka Xan]
// Kurt Eckhardt(KurtE) converted to C and Arduino
//
// This version of the Phoenix code was ported over to the Arduino Environement
// and is specifically configured for the Lynxmotion BotBoarduino
//
//NEW IN V2.1 (2013-05-17)
// - setup() made more generic by replacing exact pin-n° by PS2_CMD
//NEW IN V2.X
//================================

is ok for my hexapod? is the last?

thx very much

As for your hexapod, don’t know. To make it work fully correct may need to do things like setup configuration file with actual servo positions. Also depending on the servos the code may need to be tweaked as some servos go the opposite direction than Hitec servos, which this code was based on.

As for the last? I have my own versions up on github (www.github.com/kurte)

yes i see a problem, when I press the UP button with the arrow sometime legs at the bottom of the spider . i test alla command and i send you post for confiquration.in your github you have many version and not Confused! xe xe xe :slight_smile: i Like this hexapod :smiley:

I’ve tried the code but servos move contrarily.When I comact start goes in the original place.When I compact the arrow on,body comes down instead of coming up, When I comact lever goes backward istead of forward. How can I make it work contrarily

Several threads on this including the recent: viewtopic.php?f=42&t=9118&p=89931&hilit=servo+reversed#p89931

How similar is your hex to the LM?

Servo rotation the same?
servo controller Equivalent to SSC-32?
Processor compatible to BotBoarduino? (or AdamPro)
Leg angles?
No software available?

This is why it is a good idea to get your hardware and software from the same place!

OK, looks like you can run the code anyway.

Alan KM6VV

Hello

i change this:

if (LegIndex < 3) { wCoxaSSCV = ((long)(-sCoxaAngle1 +900))*1000/cPwmDiv+cPFConst; wFemurSSCV = ((long)(-sFemurAngle1+900))*1000/cPwmDiv+cPFConst; wTibiaSSCV = ((long)(-sTibiaAngle1+900))*1000/cPwmDiv+cPFConst; #ifdef c4DOF wTarsSSCV = ((long)(-sTarsAngle1+900))*1000/cPwmDiv+cPFConst; #endif } else { wCoxaSSCV = ((long)(sCoxaAngle1 +900))*1000/cPwmDiv+cPFConst; wFemurSSCV = ((long)((long)(sFemurAngle1+900))*1000/cPwmDiv+cPFConst); wTibiaSSCV = ((long)(sTibiaAngle1+900))*1000/cPwmDiv+cPFConst; #ifdef c4DOF wTarsSSCV = ((long)(sTarsAngle1+900))*1000/cPwmDiv+cPFConst; #endif }

to this

if (LegIndex <3) { wCoxaSSCV = ((long)(sCoxaAngle1 +900))*1000/cPwmDiv+cPFConst; wFemurSSCV = ((long)((long)(sFemurAngle1+900))*1000/cPwmDiv+cPFConst); wTibiaSSCV = ((long)(sTibiaAngle1+900))*1000/cPwmDiv+cPFConst; #ifdef c4DOF wTarsSSCV = ((long)(sTarsAngle1+900))*1000/cPwmDiv+cPFConst; #endif } else { wCoxaSSCV = ((long)(-sCoxaAngle1 +900))*1000/cPwmDiv+cPFConst; wFemurSSCV = ((long)(-sFemurAngle1+900))*1000/cPwmDiv+cPFConst; wTibiaSSCV = ((long)(-sTibiaAngle1+900))*1000/cPwmDiv+cPFConst; #ifdef c4DOF wTarsSSCV = ((long)(-sTarsAngle1+900))*1000/cPwmDiv+cPFConst; #endif }

but now i have another problem. the hexapod walks backwards instead of front, and turn right instead of turning left. of course now upside down is right. have any idea what should I do?
sorry for my bad english but I’m from GREECE and translated with google translate

GIANNHSitia

Sound potentially like your left legs act like right legs… Couple of options you could try. One swap all of the legs.

2nd - Probably a bit easier. Experiment. First understand in the code, I mentally translate : Coxa - Is Hip Horizontal, Femur is Hip Vertical, Tibia is Knee. So you say it is going the wrong direction, sound like maybe the Hip Horizontals (coxa) need to be negated. So try changing the wCoxaSSCV lines back to what they were before the change. Does that solve it? If not we need to experiment a bit more.

Kurt

Hello

I change the wCoxasscV to - and now is perfect. But I find a bug. 5 legs to defaul body position Legs make FASTER motion and greater, we go higher, and 1 leg move normal. If I chan boby position one step up, all legs is ok. This problem had not before the change, Maybe the problem is code or firmware gp2.02. Generally works fine. Will you try to send a video

hello agean. i change the pin of ssc32 and code and now work perfect… the code is amazing !!!