Bonjous a toutes et a tous.
J'essais de faire fonctionner un dfplayer et des servomoteurs. Je suis confronté à un probleme que je n'arrive pas a résoudre. (Cependant je suis quand même debutant est surrement un peu nul).
Je vous joins le programme dans lequel j'ai integré des commentaires en ligne 104 a 107 afin de vous aider peut etre à trouver une solution.
J'ai bien sur essayé de faire fonctionner mon dfplayer en retirant toutes les lignes correspondentes aux servomoteurs et cela fonctionne parfaitement, soit en mettant dans la loop la commande "myDFPlayer.play(x);" ou bien dans des fonctions.
Mais dès que j'intégre les servomoteurs, plus rien,à par le lancement du premier MP3 qui est dans le setup.
Je n'y connais rien, mais je pense à un problème de compatibilité de librairie ou peut etre d'interruption mais je ne sais pas résoudre ce probleme
Merci d'avance à celle et ceux qui pourrant me donner la solution.
Cordialement
Pascal
// Pascal Rousseaux le 08 06 2023
// Permet la lecture de 2 fichiers MP3 successivement.
// **** Les bibliotheques
// -------------------------
#include "SoftwareSerial.h"// Pour les communications séries avec le DFplayer
#include "DFRobotDFPlayerMini.h"// La bibliothèque pour le DFPlayer
#include <VarSpeedServo.h>// Bibliotheque pour les servos moteur TEST DE COMPATIBILITE AVEC DFPLAYER
VarSpeedServo servoBouche;//Servo bouche attaché à la pin 7
int vitesseServoBouche1 (70); // Indiquez ici la vitesse 1 de déplacement de la bouche. Plus le chiffre est grand, plus ca va vite
int vitesseServoBouche2 (200); // Indiquez ici la vitesse 1 de déplacement de la bouche. Plus le chiffre est grand, plus ca va vite
const int ServoBoucheOuverte (90); // Règle la limite du servo bouche en position ouverte max 90
const int ServoBoucheCentre (115);// Règle le servo bouche en position centrale 112
const int ServoBoucheFermee (135);// Règle la limite du servo bouche en position fermee max 135
VarSpeedServo servoRotation; //Servo droit attaché a la pin 6
int vitesseServoRotation1 (10);// Indiquez ici la vitesse 1 de déplacement du servo de Rotation. Plus le chiffre est grand, plus ca va vite
int vitesseServoRotation2 (80);// Indiquez ici la vitesse 1 de déplacement du servo de Rotation. Plus le chiffre est grand, plus ca va vite
const int ServoRotationDroite (160);// Règle la limite du SERVO DE ROTATION à droite
const int ServoRotationCentre (90);// Règle la limite du SERVO DE ROTATION au centre
const int ServoRotationGauche(50);// Règle la limite du SERVO DE ROTATION à Gauche
VarSpeedServo servoElevation;// Servo gauche attaché à la pin 5
int vitesseServoElevation1 (10);
int vitesseServoElevation2 (80);
const int ServoElevationHaute(100);//Règle la limite haute du servo Elevation servo ELEVATION
const int ServoElevationCentre(90); // Règle la limite centrale du servo Elevation
const int ServoElevationBasse(80);//Règle la limitebasse du servo gauche
// **** Communication série
//---------------------------
// PIN qui serviront pour la communication série
SoftwareSerial mySoftwareSerial(2,3); // Permet d’initialiser la bibliothèque SoftwareSerial entre les PIN 2(RX)& pin 3(TX) pour l'arduino RX, TX du DFplayer
DFRobotDFPlayerMini myDFPlayer;// Pour initialiser l'objet myDFplayer.
void setup ()
{
//**************************************************************************************************************************
//*************************************************** DEBUT DU SETUP *******************************************************
//**************************************************************************************************************************
//Initialisation des communications séries
//----------------------------------------
mySoftwareSerial.begin(9600);// Permet de démarrer la communication série avec le DFplayer.
Serial.begin(9600);// Optionnel pour info dans le terminal
Serial.println();
Serial.println(F("DFRobot DFPlayer Mini Demo"));
Serial.println(F("Initialisation du DFPlayer ... (Peut prendre 3~5 secondes)"));
if (!myDFPlayer.begin(mySoftwareSerial)) // Permet de vérifier si la communication est bien établie avec le DFplayer.
{
Serial.println(F("Problème de communication:"));
Serial.println(F("1.SVP vérifier la connexion série!"));
Serial.println(F("2.SVP vérifier la carte SD !"));
while(true);
}
Serial.println(F("DFPlayer Mini Prêt."));
myDFPlayer.setTimeOut(500); // Définit un temps de time out sur la communication série à 500 ms
myDFPlayer.volume(30);// Règle le volume à 30 (Valeur admise de 0 à 30)
myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);//Configure la source par défaut (ici Lecteur SD)
// Fin de l'initialisation communications série
//---------------------------------------------
// Les fichiers MP3 de la carte SD
//--------------------------------
//myDFPlayer.play(1);Serial.println(F("RireSataniqueDuSetup"));// Joue le MP3 "RireSatanique";
//myDFPlayer.play(2); delay(9000);// Joue le MP3 "Eh ! Mes salutations l'amis je suis le capitaine Calico Jack..."
//myDFPlayer.play(3); // Joue le MP3 "A vos rangs artilleurs étranger à babord"
//myDFPlayer.play(4); // Joue le MP3 "A vos rangs artilleurs étranger à tribord"
//Attache chaque servo à une Pin de l'arduino
//-------------------------------------------
servoBouche.attach(7); // Attache la PIN 7 au Servo de la bouche
servoRotation.attach(6);// Attache la PIN 6 au Servo Rotation
servoElevation.attach(5);// Attache la PIN 5 au Servo Elevation
//------------------------------------
//intialisation des servos au démarage
servoRotationCentre();Serial.println(F("InitRotationCentreSetup"));
fermeLaBouche();Serial.println(F("Init la Bouche Fermee setup"));
//Fin d'initialisation des servo au démarage
//------------------------------------------
myDFPlayer.play(2); delay(9000);// Joue le MP3 "Eh ! Mes salutations l'amis je suis le capitaine Calico Jack..."
// ********************************************* MON PROBLEME EST LA !!! ******************************************************
// Si je veux lancer un deuxieme mp3 (ci-dessous par exemple) et quelque soit l'endroit ou le veux le placer
//(soit dans la loop ou dans une fonction) il ne se lance pas et je constate un mouvement rapide du servo rotation
// Je pense avoir tout essayé ???
//myDFPlayer.play(1);Serial.println(F("RireSataniqueDuSetup"));// Joue le MP3 "RireSatanique";
// **************************************************************************************************************************
//****************************************************************************************************************
//**************************************************** FIN DE SETUP **********************************************
//****************************************************************************************************************
}
void loop()
{
//*****************************************************************************************************************
//**************************************************** DEBUT DE LA LOOP *******************************************
//*****************************************************************************************************************
myDFPlayer.play(1);delay(9000);Serial.println(F("RireSataniqueLoop"));// Joue le MP3 "RireSatanique";
ouvreLaBouche();// Appel de la fonction ouvreLaBouche
fermeLaBouche();// Appel de la fonction FermeLaBouche
delay(3000);
ouvreLaBouche();// Appel de la fonction ouvreLaBouche
myDFPlayer.play(2);delay(9000);Serial.println(F("Eh mes salutations l'ami..."));// Joue le MP3 "Yey Mes salutations...";
fermeLaBouche();// Appel de la fonction FermeLaBouche
delay(3000);
servoRotationGauche();//Appel de la fonction ServoRotationGauche
delay(3000);
servoRotationCentre();//Appel de la fonction ServoRotationCentrale
delay(3000);
servoRotationDroite();//Appel de la fonction ServoRotationDroite
delay(3000);
servoRotationCentre();//Appel de la fonction ServoRotationCentrale
delay(3000);
}
//**************************************************************************************************************
//************************************************* FIN DE LOOP ************************************************
//**************************************************************************************************************
//_____________________________________________________________________________________________________
//***************************************** LES FONCTIONS **********************************************
//------------------------------------------------------------------------------------------------------
//************************************************************************************************************************
//*********************************************** DEBUT DE LA FONCTION BOUCHE OUVERTE ************************************
void ouvreLaBouche()
{
Serial.println(F("FonctionOuvreBouche"));
servoBouche.write(ServoBoucheOuverte,vitesseServoBouche1);
}
//************************************************ FIN DE LA FONCTION BOUCHE OUVERTE**************************************
//************************************************************************************************************************
//*************************************************************************************************************************
//*********************************************** DEBUT DE LA FONCTION BOUCHE FERMEE**************************************
void fermeLaBouche()
{
Serial.println(F("FonctionFermeBouche"));
servoBouche.write(ServoBoucheFermee,vitesseServoBouche1);
}
//************************************************ FIN DE LA FONCTION BOUCHE FERMEE*********************************************
//******************************************************************************************************************************
//*****************************************************************************************************************************
//************************************************ DEBUT DE LA FONCTION PARLE ***********************************************
void servoBoucheParle()
{
Serial.println(F("FonctionParle"));
ouvreLaBouche();//Appel de la fonction bouche ouverte
//myDFPlayer.play(1);delay(6000);
fermeLaBouche();//Appel de la fonction fermée
}
//************************************************ FIN DE LA FONCTION PARLE ***********************************************
//*****************************************************************************************************************************
//******************************************************************************************************************************
//*********************************************** DEBUT DE LA FONCTION SERVO ROTATION A GAUCHE *********************************
void servoRotationGauche()
{
Serial.println(F("FonctionRotaGauche"));
servoRotation.write(ServoRotationGauche,vitesseServoRotation1);
}
//************************************************ FIN DE LA FONCTION SERVO ROTATION A GAUCHE ***********************************
//*******************************************************************************************************************************
//******************************************************************************************************************************
//*********************************************** DEBUT DE LA FONCTION SERVO ROTATION CENTRE ***********************************
void servoRotationCentre()
{
Serial.println(F("FonctionRotaCentre"));
servoRotation.write(ServoRotationCentre,vitesseServoRotation1);
}
//************************************************ FIN DE LA FONCTION SERVO ROTATION CENTRE *************************************
//*******************************************************************************************************************************
//*******************************************************************************************************************************
//*********************************************** DEBUT DE LA FONCTION SERVO ROTATION A DROITE **********************************
void servoRotationDroite()
{
Serial.println(F("FonctionRotaDroite"));
servoRotation.write(ServoRotationDroite,vitesseServoRotation1);
}
//*********************************************** FIN DE LA FONCTION SERVO ROTATION A DROITE ************************************
//*******************************************************************************************************************************aisissez ou collez du code ici