Aide sur du code

Bonjour à tous, je commence depuis peu à bricoler avec les arduinos pour les intéreger à des créations imprimées en 3D et j'ai malheureusement un problème avec mon code.
Je m'explique :
Dans un premier temps j'ai écris ceci:

#include <IRremote.h>
// moteur 1
int in1 = 9;
int in2 = 8;
int enA =10;
// moteur 2
int in3 = 7;
int in4 = 6;
int enB = 5;
// RECEVEUR IR
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;


void setup()
{
  pinMode (enA, OUTPUT);
  pinMode (enB, OUTPUT);
  pinMode (in1, OUTPUT);
  pinMode (in2, OUTPUT);
  pinMode (in3, OUTPUT);
  pinMode (in4, OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver

}

void loop()
{
  if (irrecv.decode(&results))
    {
     Serial.println(results.value, HEX);
     irrecv.resume(); // Receive the next value
    }

    if(results.value==0xFFA25D)
    {
     forward();
    }
    
    if(results.value==0xFF629D)
    { 
      back();
  
    }
    
     if(results.value==0xFFE21D)
    {
      left();
    }
  
     if(results.value==0xFF22DD)
    {
      right();
    }
    //bot stops
    if(results.value==0xFF02FD)
    {
      arret();
    }
}

void forward() {
//fonction pour aller en avant
//initialisation du moteur gauche avec vitesse de 200 sur 255
digitalWrite(in1, HIGH);
digitalWrite(in2,LOW);
analogWrite(enA,200);
//initialisation du moteur droit avec vitesse de 200 sur 255
digitalWrite(in3, HIGH);
digitalWrite(in4,LOW);
analogWrite(enB,200); 
}

void back() {
//fonction pour aller en arriere
//initialisation du moteur gauche avec vitesse de 200 sur 255
digitalWrite(in1, LOW);
digitalWrite(in2,HIGH);
analogWrite(enA,200);
//initialisation du moteur droit avec vitesse de 200 sur 255
digitalWrite(in3, LOW);
digitalWrite(in4,HIGH);
analogWrite(enB,200); 
}

void right() {
//fonction pour aller à droite
//ARRET du moteur gauche 
digitalWrite(in1, LOW);
digitalWrite(in2,LOW);
//initialisation du moteur droit avec vitesse de 200 sur 255
digitalWrite(in3, HIGH);
digitalWrite(in4,LOW);
analogWrite(enB,200); 
}

void left() {
//fonction pour aller à gauche
//initialisation du moteur gauche avec vitesse de 200 sur 255
digitalWrite(in1, HIGH);
digitalWrite(in2,LOW);
analogWrite(enA,200);
//ARRET du moteur droit 
digitalWrite(in3, LOW);
digitalWrite(in4,LOW);

}
void arret() {
//fonction pour s'arreter
//ARRET du moteur gauche 
digitalWrite(in1, LOW);
digitalWrite(in2,LOW);

//ARRET du moteur droit 
digitalWrite(in3, LOW);
digitalWrite(in4,LOW);

}

Et celà marche comme un charme j'arrive à faire bouger mes deux moteurs sans problèmes pour aller en avant,en arrière, à gauche et à droite.

J'ai ensuite rajouter quelques trucs pour controler le mouvement d'un servo moteur.

#include <IRremote.h>
#include <Servo.h>
// moteur 1
int in1 = 9;
int in2 = 8;
int enA =10;
// moteur 2
int in3 = 7;
int in4 = 6;
int enB = 5;
// RECEVEUR IR
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position


  



void setup()
{
  pinMode (enA, OUTPUT);
  pinMode (enB, OUTPUT);
  pinMode (in1, OUTPUT);
  pinMode (in2, OUTPUT);
  pinMode (in3, OUTPUT);
  pinMode (in4, OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
  myservo.attach(2);  // attaches the servo on pin 9 to the servo object

}

void loop()
{
 
 if (irrecv.decode(&results))
    {
     Serial.println(results.value, HEX);
     irrecv.resume(); // Receive the next value
    }

    if(results.value==0xFFA25D)
    {
     forward();
    }
    
    if(results.value==0xFF629D)
    { 
      back();
  
    }
    
     if(results.value==0xFFE21D)
    {
      left();
    }
  
     if(results.value==0xFF22DD)
    {
      right();
    }
    //bot stops
    if(results.value==0xFF02FD)
    {
      arret();
    }
    if(results.value==0xFFE01F)
    {
       for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
 for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
    }

}

void forward() {
//fonction pour aller en avant
//initialisation du moteur gauche avec vitesse de 200 sur 255
digitalWrite(in1, HIGH);
digitalWrite(in2,LOW);
analogWrite(enA,200);
//initialisation du moteur droit avec vitesse de 200 sur 255
digitalWrite(in3, HIGH);
digitalWrite(in4,LOW);
analogWrite(enB,200); 
}

void back() {
//fonction pour aller en arriere
//initialisation du moteur gauche avec vitesse de 200 sur 255
digitalWrite(in1, LOW);
digitalWrite(in2,HIGH);
analogWrite(enA,200);
//initialisation du moteur droit avec vitesse de 200 sur 255
digitalWrite(in3, LOW);
digitalWrite(in4,HIGH);
analogWrite(enB,200); 
}

void right() {
//fonction pour aller à droite
//ARRET du moteur gauche 
digitalWrite(in1, LOW);
digitalWrite(in2,LOW);
//initialisation du moteur droit avec vitesse de 200 sur 255
digitalWrite(in3, HIGH);
digitalWrite(in4,LOW);
analogWrite(enB,200); 
}

void left() {
//fonction pour aller à gauche
//initialisation du moteur gauche avec vitesse de 200 sur 255
digitalWrite(in1, HIGH);
digitalWrite(in2,LOW);
analogWrite(enA,200);
//ARRET du moteur droit 
digitalWrite(in3, LOW);
digitalWrite(in4,LOW);

}
void arret() {
//fonction pour s'arreter
//ARRET du moteur gauche 
digitalWrite(in1, LOW);
digitalWrite(in2,LOW);

//ARRET du moteur droit 
digitalWrite(in3, LOW);
digitalWrite(in4,LOW);

}

Celui-ci marche cependant maintenant un seul des deux moteurs fonctionne.Je n'ai pourtant rien changé dans la partie qui contrôle ceux-ci.
Pouvez-vous m'éclairer un petit peu?
Un grand merci d'avance

bonjour,
servo alimenté par quoi?
ca ressemble à une chute d'alim, donc alim séparée pour le servo sans oublier la masse commune.

Ah oui c'est vrai que j'ai pas testé cette option.
Les deux moteurs sont alimentés par le module L298N mais la diode IR ainsi que le servo sont directement branchés sur l'arduino (avec masse commune)