Servo G9 et DFPlayer mini

Bonjour à tous,

Je suis un petit novice dans le monde arduino mais je suis plutot content de ma première réalisation. Cependant, je rencontre un problème et malgré mes recherches, je ne trouve pas de solution.

J'utilise un nano avec un DFplayer pour diffuser des sons en même temps que du mouvement afin de reproduire une tourelle du jeu Portal.

Cependant, a chaque fois qu'un son ce lance, j'ai des interférences dans le servomoteur qui se met a bouger sans raison (comme un sursaut ou une impulsion)...

Auriez vous une idée ? J'ai lu quelque part que l'ajout d'un condensateur en parallèle de l'alimentation pouvais améliorer les choses mais sans certitude...

Merci par avance !

Une petite vidéo pour illustrer :-/

VID_20200704_171936.mpg (1.02 MB)

Bon bin la, je comprend vraiment pas... Si mon servo est détaché, pas de souci. Par contre, si j'utilise les deux en même temps, j'ai un sursaut du moteur et un clac dans le haut parleur...

Un bout de code si cela peux vous être utile...

#include <Servo.h>
#include <DFMiniMp3.h>
#include <SoftwareSerial.h>

class Mp3Notify
{
public:
   static void PrintlnSourceAction(DfMp3_PlaySources source, const char* action)
   {}
   static void OnError(uint16_t errorCode)
   {
     Serial.print("Com Error ");
     Serial.println(errorCode);
   }
   static void OnPlayFinished(DfMp3_PlaySources source, uint16_t track)
   {}
   static void OnPlaySourceOnline(DfMp3_PlaySources source)
   {}
   static void OnPlaySourceInserted(DfMp3_PlaySources source)
   {}
   static void OnPlaySourceRemoved(DfMp3_PlaySources source)
   {}
};


//Setup for soundcard
SoftwareSerial secondarySerial(4, 2); //RX, TX
DFMiniMp3<SoftwareSerial, Mp3Notify> mp3(secondarySerial);

Servo myservo;  // create servo object to control a servo

Servo servo_pivot;

//Broche Moteur
byte PIVOT = 6;

//Position moteur
byte parkPIVOT =90;
byte posPIVOT = 90;
byte maxPIVOT = 180;
byte minPIVOT = 0;

byte pivotCW = 1;

byte volu = 5;

void setup() {
   Serial.begin(9600);
  
   activate_servos();
   Serial.println("Pivot au parking");
   servo_pivot.write(parkPIVOT);

   Serial.println("Lancement module MP3");
   mp3.begin();
   mp3.setVolume(volu);
   
}

void loop() {

  for (int i=0; i <= 220; i++) {
    
    if (pivotCW == 0) posPIVOT = posPIVOT - 2; //increment one step CW if CW = 0
    if (pivotCW == 1) posPIVOT = posPIVOT + 2; //otherwise go one step other direction
    
    if (posPIVOT >= maxPIVOT) {
       Serial.println("Changement de direction");
       pivotCW = 0;
    }
    
    if (posPIVOT <= minPIVOT) {
       Serial.println("Changement de direction");
       pivotCW = 1; //if min rotation counterclockwise,switch to clockwise
    }

    servo_pivot.write(posPIVOT);
    Serial.print("posPIVOT :");
    Serial.println(posPIVOT);
   
    if (posPIVOT >= maxPIVOT || posPIVOT <= minPIVOT) {
       mp3.setVolume(volu);
       Serial.println("Son recherche : 1000");
       mp3.playMp3FolderTrack(1000); // Bip
       delay(1000);
    }
    delay(50);
  }
}

//==================== Activate servos ==========================//
void activate_servos() {
   delay (100);
   Serial.println("Activation des servos pivot, ailes et pitch");
   servo_pivot.attach(PIVOT);
   delay (100);
}