Controller Play Station due e servo

Ciao a tutti,
sono un nuovo iscritto e spero possiate aiutarmi nel mio piccolo problema. Non da molto tempo mi sono cimentato nel mondo di arduino.
Essendo appssionato di modellismo,mi piacerebbe pilotare la mia auto f1 della lego (questa per intenderci http://www.lego.com/it-it/technic/products/speed/42000)utilizzando il controller della play 2. Prima di scrivere e fare domande inutili ho cercato in rete,e grazie anche a questo forum, ho trovato molte info utili e sono venuto a capo del mio progetto. Ma purtroppo sono fermo in punto molto ma molto strano.
Vi posto i programmi che ho scritto.
Gestione motore marcia aventi e indietro:

#include <GPSX.h>
#include <GPSXClass.h>
int pin293 = 8;

void setup()
{
  
  PSX.mode(PSX_PAD1, MODE_ANALOG, MODE_UNLOCK);
  PSX.updateState(PSX_PAD1);
  pinMode (8,OUTPUT);
}

void loop()
{
  PSX.updateState(PSX_PAD1);
  PSX.mode(PSX_PAD1,MODE_ANALOG,MODE_UNLOCK);
  if (ANALOG_LEFT_Y(PSX_PAD1) > 0 && ANALOG_LEFT_Y(PSX_PAD1) < 114)
   {
    analogWrite (9, ANALOG_LEFT_Y(PSX_PAD1));
    digitalWrite(8,HIGH);
    }
    if (ANALOG_LEFT_Y(PSX_PAD1) > 115 && ANALOG_LEFT_Y(PSX_PAD1) < 140)
   {
    digitalWrite(9,HIGH);
    digitalWrite(8,HIGH);
    }
    if (ANALOG_LEFT_Y(PSX_PAD1) > 141 && ANALOG_LEFT_Y(PSX_PAD1) < 255)
   {
    analogWrite (9, ANALOG_LEFT_Y(PSX_PAD1));
    digitalWrite(8,LOW);
    }
  }

e il programma per gestire la marcia avanti e indietro funziona. levetta analogica di sinistra asse y.

ora posto il programma per la gestione dello sterzo pilotato anch’esso dalla levetta analogica (di destra asse x).

#include <Servo.h>
#include <GPSX.h>
#include <GPSXClass.h>

Servo mioservo;
int valservo;

void setup()
{
  mioservo.attach(12);
  Serial.begin(9600);
}

void loop()
{
  PSX.updateState(PSX_PAD1);
  PSX.mode(PSX_PAD1,MODE_ANALOG,MODE_LOCK);
  valservo=(ANALOG_RIGHT_X(PSX_PAD1)-35);
  mioservo.write(valservo);
  Serial.println(valservo);
}

anche questo funziona che è una bomba.

Il problema sta quando unisco i due codici:

#include <Servo.h>
#include <GPSX.h>
#include <GPSXClass.h>
int pin293 = 8;
Servo mioservo;
int valservo;
    


void setup()
{
  
  PSX.mode(PSX_PAD1, MODE_ANALOG, MODE_UNLOCK);
  PSX.updateState(PSX_PAD1);
  pinMode (8,OUTPUT);
  mioservo.attach(11);
 
}
void loop()
{
  PSX.updateState(PSX_PAD1);
  PSX.mode(PSX_PAD1,MODE_ANALOG,MODE_LOCK);
  valservo=(ANALOG_RIGHT_X(PSX_PAD1)-35);
  mioservo.write(valservo);
  
 
   if (ANALOG_LEFT_Y(PSX_PAD1) > 0 && ANALOG_LEFT_Y(PSX_PAD1) < 109)
   {
    analogWrite (9, ANALOG_LEFT_Y(PSX_PAD1));
    digitalWrite(8,HIGH);
    }
    if (ANALOG_LEFT_Y(PSX_PAD1) > 110 && ANALOG_LEFT_Y(PSX_PAD1) < 145)
   {
    digitalWrite(9,HIGH);
    digitalWrite(8,HIGH);
    }
    if (ANALOG_LEFT_Y(PSX_PAD1) > 146 && ANALOG_LEFT_Y(PSX_PAD1) < 255)
   {
    analogWrite (9, ANALOG_LEFT_Y(PSX_PAD1));
    digitalWrite(8,LOW);
    }    
}

unendo i codici il servo continua funzionare ma non si può dire la stessa cosa del motore. Infatti non effettua più la rotazione oraria e antiorario (marcia avanti marcia indietro) ma effettua solo quella avanti tra l’altro in modalità digitale (on/off)non più esponenziale. la cosa strana che separatamente i codici funzionano perfettamente.
Ho notato che le levo il comando

  mioservo.attach(11);

tutto riprende a funzionare, servo escluso. Sembra quasi dargli fastidio quel comando.
Resto in attesa di qualche esperto che possa aiutarmi, ho postato i codici sia per spiegare meglio il problema sia per utilità di tutti se ho aiutato qualcuno senza saperlo ne sono felice… :slight_smile: :slight_smile: :slight_smile: :slight_smile: :slight_smile: :slight_smile:
Ancora un grazie a tutti quelli che mi aiuteranno e quelli che già mi hanno aiutato.
Ciao e buona domenica

risolto i pin 9 e 10 nel momento che è importata la libreria servo vengono disabilitati come pwm.
Il pin 9 l'ho sostituito con pin 11 e il servo collegato al pin 10