problémes de code avec ps2 et ssc32 sur hexapod

Bonjour

j' ai écrit un petit code pour mon hexapod, dont voici la config:
arduino uno
18 servos
ps2 controller
ssc32 (lynxmotion) (ssc32 conecté sur Tx et Rx de la Uno)

Pour l'instant j'ai écrit 3 séquences: Init, AvanceTripod et InitFemurTibia
je les commandes avec les boutons: Start, Pad Up et Green de la commande Ps2

Les séquences en elles même fonctionnent pas trop mal

Le probléme que je rencontre est que lorsque j' appuis par exemple sur " Pad Up" (séquence InitFemurTibia)
l'hexapod m' enchaine les 3 séquences .
Normalement il devrait juste executer la séquence correspondant à la touche, puis attendre un nouvel "ordre"

Je suppose qu' il y a une erreur dans mon code, mais là je suis un peu perdu ...
Je ne sais pas si ça a une importance mais je suis sous l' IDE Arduino 1.0.5-r2

Est ce que quelqu'un aurait une solution à me proposer ?

Voici le code en question:

//Programme principale Hexo_Bot Ver1.02 
//Ecrit par Alain Buchard (Dracub) Septembre 2014
#if ARDUINO>99
#include <Arduino.h>
#else
#endif
#include <PS2X_lib.h>
#include <pins_arduino.h>
#include <SoftwareSerial.h> 



#define SOUND_PIN    5        // buzzer

 PS2X ps2x;
 
  int move;
  int error = 0; //default..
  int pos = 0;    // variable to store the servo position  //copy from servo code
  byte type = 0;
  byte vibrate = 0;
  
  void Init(){
    //sequence d'initialisation
    //Coxas 1,2,3,4,5,6 en position centre (Init)
    Serial.println("#24P1500#20P1420#16P1500#8P1500#4P1420#0P1500T500"); 
    delay(1550);
    //Femurs 1,2,3,4,5,6 en position centre (Init)
    Serial.println("#25P1420#21P1420#17P1550#9P1565#5P1400#1P1450T500");  
    delay(1550);
    //Tibias 1,2,3,4,5,6 en position centre (Init)
    Serial.println("#26P1330#22P1470#18P1470#10P1375#6P1470#2P1500T500");   
    delay(80);
    }
    
  void AvanceTripod(){
    //sequence marche avant "tripod"
    //Femurs 1,3,5 Init-300 PWM  (HAUT) T800
    Serial.println("#25P1120#17P1250#5P1100T800");
    delay(1700);
    //[Coxas 1,3 Init+150 et 5 Init-150 (vers l'AVANT)] et [Coxas 2 Init-150 et 4,6 Init+150 (vers l'ARRIERE)] T500
    Serial.println("#24P1650#16P1650#4P1270#20P1270#8P1650#0P1650T500");
    delay(1200);
    //Femurs 1,3,5 Init (CENTRE) T800
    Serial.println("#25P1420#17P1550#5P1400T800");
    delay(1200);
    //Femurs 2,4,6 Init-300 PWM  T800
    Serial.println("#21P1120#9P1265#1P1150T800");
    delay(1700);
    //Coxas 1,3,5 Init et Coxas 2 Init+150 et 4,6 Init-150 T500
    Serial.println("#24P1500#16P1500#4P1420#20P1570#8P1350#0P1350T500");
    delay(1200);
    //Femurs 2,4,6 Init T800
    Serial.println("#21P1420#9P1565#1P1450T800");
    delay(1700);
    }
    
  void InitFemurTibia(){
    //Tibia 1 Init-500 et Femur 1 Init-500 "up" T400
    Serial.println("#26P1830#25P920T400");
    delay(500);
    Serial.println("#26P1330#25P1420T400");//Tibia 1 et Femur 1 Init
    delay(500);
    
    //Tibia 2 Init-500 et Femur 2 Init-500 "up" T400
    Serial.println("#22P1970#21P920T400");
    delay(500);
    Serial.println("#22P1470#21P1420T400");//Tibia 2 et Femur 2 Init
    delay(500);
    
    //Tibia 3 Init-500 et Femur 3 Init-500 "up" T400
    Serial.println("#18P1970#17P1050T400");
    delay(500);
    Serial.println("#18P1470#17P1550T400");//Tibia 3 et Femur 3 Init
    delay(500);
    
    //Tibia 4 Init-500 et Femur 4 Init-500 "up" T400
    Serial.println("#10P1875#9P1065T400");
    delay(500);
    Serial.println("#10P1375#9P1565T400");//Tibia 4 et Femur 4 Init
    delay(500);
    
    //Tibia 5 Init-500 et Femur 5 Init-500 "up" T400
    Serial.println("#6P1970#5P900T400");
    delay(500);
    Serial.println("#6P1470#5P1400T400");//Tibia 5 et Femur 5 Init
    delay(500);
    
     //Tibia 6 Init-500 et Femur 6 Init-500 "up" T400
    Serial.println("#2P2000#1P950T400");
    delay(500);
    Serial.println("#2P1500#1P1450T400");//Tibia 6 et Femur 6 Init
    delay(500);
    
  }
    
    
   
  
  void setup(){
       Serial.begin(38400); //transmission rate between controller and motors
   
    error = ps2x.config_gamepad(13,11,10,12, true, true);   //setup pins and settings:  GamePad(clock, command, attention, data, Pressures?, Rumble?) check for error      
   
  }
  
  void loop(){
     if(error == 1) //skip loop if no controller found
      return;
   
        
    //Check values of controller (check state)  
    ps2x.read_gamepad(false, vibrate);          //read controller and set large motor to spin at 'vibrate' speed
  
   
    //position Init 
    if(ps2x.ButtonPressed(PSB_START)){
    Init();
    }

    //Avance Tripod_Gait
    if(ps2x.ButtonPressed(PSB_PAD_UP)){
    AvanceTripod();
    }
    
    //Sequence InitFemurTibia
    if(ps2x.ButtonPressed(PSB_GREEN)){
    InitFemurTibia();
    }
    
    
    delay(200);
  }