LOCODUINO
Parlons Arduino => Composants => Discussion démarrée par: Beber le mars 15, 2025, 09:47:41 am
-
Bonjour,
je pilote des servos pour aiguillage depuis un Arduino Méga à travers 2 cartes PCA9685. Tout fonctionne.
Par contre, lorsque j'ajoute une module DFPlayer, plus rien ne fonctionne.
Ci-dessous le début du code :
// Librairie Servo et extension 16 sorties PWM avec PCA9685 pour piloter les servos
#include <Wire.h> // bibliothèque I2C
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm1 = Adafruit_PWMServoDriver(0x40);
Adafruit_PWMServoDriver pwm2 = Adafruit_PWMServoDriver(0x41);
// Librairie DFPlayer
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial SerialSon(10, 11); // RX, TX ; à adapter sur Mega
DFRobotDFPlayerMini Son;
...
void setup() {
// initialisation des ports série
Serial.begin(9600);
Serial3.begin(9600);
SerialSon.begin(9600);
Que se passe-t-il ?
Merci pour votre aide.
-
Il faut que tu modifies les broches du TX et du RX de DF Player.
Sur un Mega, les broches 14, 15, 16, 17, 18 et 19 sont des entrées sorties Serial "hard". En utilisant directement deux de ces boches (sans passer par SoftwareSerial) pour ton DF Player, cela devrait fonctionner.
Christophe
-
Merci Christophe, pour cette proposition rapide.
Cependant, aprsè correction du code, ça ne marche toujours pas ; rien ne fonctionne, ni les servos, ni le son.
Le DFPlayer est connecté sur 16-17
Voici le code modifié :
// Librairie DFPlayer
#include "DFRobotDFPlayerMini.h"
DFRobotDFPlayerMini Son;
void setup() {
// initialisation des ports série
Serial.begin(9600);
Serial3.begin(9600);
L'ajout de Serial2.begin(9600);
ne change rien.
La led L clignote par intermittence.
Merci d'avance pour votre aide.
-
Dans le setup() tu devrais avoir quelque chose dans ce gout là :
Son.begin(Serial3, /*isACK = */true, /*doReset = */true))
mais tu ne montres pas tout ton code ???
-
Désolé.
Voici le code avant void loop :
// ======================================================================
// Programme de gestion du reseau : aiguilles, sons, feux
// ======================================================================
// Librairie Servo et extension 16 sorties PWM avec PCA9685 pour piloter les servos
#include <Wire.h> // bibliothèque I2C
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm1 = Adafruit_PWMServoDriver(0x40);
Adafruit_PWMServoDriver pwm2 = Adafruit_PWMServoDriver(0x41);
// Librairie DFPlayer
//#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
DFRobotDFPlayerMini Son;
// Librairie RFID
#include "SPI.h"
#include "MFRC522.h"
// Déclaration Pin RFID
#define RST_PIN 9 // RES pin
#define SS_PIN 10 // SDA (SS) pin
MFRC522 TAGA(SS_PIN, RST_PIN);
String tagID = "";
// Constantes Servo
#define SERVOMIN 125 //125
#define SERVOMAX 575 //575
#define FREQ 60 // fréquence de puls. : 50 ou 60
#define NBS 2 // nombre de servos maxi 16
int PosA = 60; // Position A (haut-droite)
int PosB = 130; // Position opposée
int Vitesse = 50; // Vitesse de deplacement du servomoteur
int PosI = PosA;
int angle;
int Aiguil;
// ========== Setup =============
void setup() {
// initialisation des ports série
Serial.begin(9600);
Serial3.begin(9600);
Son.begin(Serial2, /*isACK = */true, /*doReset = */true);
// Initialisation PWM
pwm1.begin();
pwm1.setPWMFreq(FREQ);
pwm2.begin();
pwm2.setPWMFreq(FREQ);
// Setup RFID
SPI.begin();
TAGA.PCD_Init();
// Setup son
Son.volume(20); // Réglez le volume (0 à 30)
}
J'ai intégré votre solution sans trop savoir ce qui en retourne ; je débute en arduino.
Avec cette solution, le premier servo piloté se bloque et tout se bloque.
Encore merci pour votre aide.
-
Bonjour,
est-ce que le DFPlayer seul sur le mega , ça fonctionne ?
-
Bonjour,
oui le DFPlayer marche seul sur Méga. Idem pour le pilotage des servos.
Ce sont les 2 ensembles qui ne fonctionnent plus.
Merci.
-
c'est singulier (sans jeu de mot) ; peux-tu mesurer le 5v , avec les servos et le DF en "service" ?
-
Bonsoir,
j'ai bien 5v.
Je précise que DFPlayer marche seul sur méga avec ce code :
#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>
DFRobotDFPlayerMini myDFPlayer;
void setup() {
Serial.begin(115200); // Moniteur série pour le débogage
Serial2.begin(9600); // Communication avec DFPlayer Mini
Serial.println("Initialisation DFPlayer...");
if (!myDFPlayer.begin(Serial2)) {
Serial.println("Échec de la connexion DFPlayer !");
while (true); // Bloque le programme si DFPlayer ne répond pas
}
Serial.println("DFPlayer initialisé avec succès.");
myDFPlayer.volume(20); // Réglage du volume (0-30)
myDFPlayer.play(2); // Jouer le premier fichier MP3
}
void loop() {
// Ajoutez ici vos commandes pour interagir avec DFPlayer
}
donc avec Serial2.begin(9600)
Merci pour votre aide.
Si pas de solution, je déporterai la gestion du son sur un Nano ou Uno.