Controllare un servomeccanismo con un telecomando tv

Salve a tutti, scrivo qui sperando di trovare aiuto.
Pultroppo io non sono troppo esperto di Arduino, diciamo che come autodidatta me la cavo, ma ultimamente sono venuto a scontrarmi con un problema che proprio non riesco a capire.
Ho creato un piccolo robot su 2 ruote che si muove usando un normale telecomando della tv, ora volevo attaccarci sopra un vecchio progetto di un braccio robotico ( mosso da servocomandi ).
Ovviamente ho cercato un programma che lo facesse muovere con l'uso di due bottoni, i programmi funzionano entrambi, ma quando li unisco non riesco più a far muovere il braccio.
il primo programma usato per il telecomando è questo:

#include <IRremote.h> // Includo la libreria.

#define P0 0x91D //rinomina codice per pulsante 0
#define P1 0x1D //rinomina codice per pulsante 1
#define P2 0x81D //rinomina codice per pulsante 2
#define P3 0x41D //rinomina codice per pulsante 3
#define P4 0xC1D //rinomina codice per pulsante 4
#define P5 0x21D //rinomina codice per pulsante 5
#define P6 0xA1D //rinomina codice per pulsante 6
#define P7 0x61D //rinomina codice per pulsante 7
#define P8 0xE1D //rinomina codice per pulsante 8
#define P9 0x11D //rinomina codice per pulsante 9

#define PSX 0xAFD //rinomina codice per pulsante SINISTRA
#define PDX 0x2FD //rinomina codice per pulsante DESTRA
#define PUP 0x4FD //rinomina codice per pulsante SU
#define PDOWN 0xCFD //rinomina codice per pulsante GIU

#define POK 0x6FD //rinomina codice per pulsante OK
#define PONOFF 0xA9D //rinomina codice per pulsante ON/OFF
#define EXIT 0xC7D //rinomina codice per EXIT

#define PADD 0x9D //rinomina codice per PROGRAMMA+
#define PSUBTRACT 0x89D //rinomina codice per RPROGRAMMA-

#define VADD 0x9FA96F //rinomina codice VOLUME+(1)
#define VADDTWO 0x9912B99A //rinomina codice VOLUME+(2)

#define VSUBTRACT 0xBE15326E //rinomina codice VOLUME-(1)
#define VSUBTRACTTWO 0xDB9D3097 //rinomina codice VOLUME-(2)

int RECV_PIN = 11; // Pin ricevitore Ir

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
pinMode(9, OUTPUT); // Led 1
pinMode(10, OUTPUT); // Led 2
pinMode(13, OUTPUT); // Led di stato
irrecv.enableIRIn(); // Inizializza ricevitore Ir
Serial.begin (9600);
}

void loop() {

if (irrecv.decode(&results)) {
Serial.println(results.value, HEX); //Risultato in esadecimale
irrecv.resume();
}
if(results.value == P1){
digitalWrite(13, HIGH);
}
if(results.value == P2){
digitalWrite(13, LOW);
}
}

Il secondo programma invece è questo :

#include <Servo.h>

Servo myservo;
#define leftPin 2
#define rightPin 3
int pos = 90;
int delayPeriod = 50; // increasing this slows down the servo movement

void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
myservo.write(pos); // center the servo
pinMode(leftPin, HIGH); // turn on pullup resistors
pinMode(rightPin, HIGH);
}

void loop()
{
if(digitalRead(leftPin) == LOW)
{
// in steps of 1 degree
if( pos > 0)
--pos;
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(delayPeriod);
}
if(digitalRead(rightPin) == LOW)
{
if( pos < 180)
++pos;
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(delayPeriod);
}
}

Allora entrambi presi singolarmente funzionano, ma quanto unisco quello del telecomando a quello del servocomando quest'ultimo non va più ( ovviamente cambio tutte le sigle per dirgli che i pulsanti sono es:P3 e P6 e non prendere l'ingresso dal pin 2e3 )

dove sbaglio ? :astonished:

Atualmente il codice che sto utilizando è questo:

#include <IRremote.h> // Includo la libreria.

#include <Servo.h>

Servo myservo;
int pos = 90;

#define P0 0x100 //rinomina codice per pulsante 0
#define P1 0x101 //rinomina codice per pulsante 1
#define P2 0x102 //rinomina codice per pulsante 2
#define P3 0x903 //rinomina codice per pulsante 3
#define P4 0x904 //rinomina codice per pulsante 4
#define P5 0x105 //rinomina codice per pulsante 5
#define P6 0x106 //rinomina codice per pulsante 6
#define P7 0x907 //rinomina codice per pulsante 7
#define P8 0x908 //rinomina codice per pulsante 8
#define P9 0x109 //rinomina codice per pulsante 9

#define PUP 0x12E //rinomina codice per VOLUME SU
#define PDOWN 0x92C //rinomina codice per VOLUME GIU
#define VOLUP 0x10 //rinomina codice per pulsante PSU
#define VOLDOWN 0x11 //rinomina codice per pulsante PGIU

#define PAUS 0x929 //PAUSA
#define PLA 0x935 //PLAY
#define STO 0x936 //STOP
#define INDIETRO 0x932 //INDIETRO
#define AVANTI 0x934 //AVANTI
#define DATA 0x10A // IL PULSANTE CON SCRITTO -/--

#define ONOFF1 0x10C //STOP
#define ONOFF2 0x90C //STOP
#define MUTE1 0xD //STOP
#define MUTE2 0x80D //STOP
#define OK 0x124 //OK

int RECV_PIN = 2; // Pin ricevitore Ir

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{

myservo.attach(9); // attaches the servo on pin 9 to the servo object
myservo.write(pos); // center the servo

irrecv.enableIRIn(); // Inizializza ricevitore Ir
Serial.begin (9600);
}

void loop() {

if (irrecv.decode(&results)) {
Serial.println(results.value, HEX); //Risultato in esadecimale
irrecv.resume();
}
if(results.value == ONOFF1){
digitalWrite(13, HIGH);
}
if(results.value == ONOFF2){
digitalWrite(13, LOW);
}

if(digitalRead(P1) == LOW)
{
// in steps of 1 degree
if( pos > 0)
--pos;
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(50);
}
if(digitalRead(P2) == LOW)
{
if( pos < 180)
++pos;
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(50);
}

Allora entrambi presi singolarmente funzionano, ma quanto unisco quello del telecomando a quello del servocomando quest'ultimo non va più

Specifica meglio l' errore.
Ciao Uwe

if(digitalRead(P1) == LOW)  
  {
   // in steps of 1 degree
   if( pos > 0)
   --pos;
    myservo.write(pos);        // tell servo to go to position in variable 'pos'
    delay(50);             
  }
  if(digitalRead(P2) == LOW)  
  {
   if( pos < 180)
    ++pos;
    myservo.write(pos);        // tell servo to go to position in variable 'pos'
    delay(50);     
  }

l'errore secondo me sta nel fatto che vuoi fare una lettura su un pin digitale che però, a differenza dello scketch di prima ,quì non utilizzi

tonid ha ragione.
Stai controllando dei pulsanti inesistenti e non controllare se il telecomando manda il codice per spostare il Servo.
Ciao Uwe