Bonjour.
Je suis en train de réaliser une horloge, une de plus, et je souhaite avoir un réveil en musique. La partie horloge fonctionne avec ESP8266+LCD20*4+Encodeur rotatif+ buzzer passif pour faire beep. J'ai commencé à faire des essais avec un lecteur de mp3 BY8001-16P : Arduino Uno (de base)+BY8001-16P+un haut-parleur+la librairie BY8001 qui se trouve sur GitHub - theFPVgeek/BY8001: Arduino library for BY8001-16P and BY8301-16P MP3 modules et le sketch ex1PlaybackSequentially.ino qui se trouve sur le GitHub. Tout fonctionne sauf la commande getNumberOfTracksTF qui devrait renvoyer le nombre de morceaux de musique et qui renvoie 0.
Est ce que quelqu'un a déjà eu cette expérience ?
Merci d'avance de votre aide et toutes mes excuses si je n'ai pas respecté toutes les règles de ce forum. (C'est la première fois que je crée un topic.)
Ici peut-être une solution...
La mise en place du module ne semble pas non plus être le problème puisque j'ai suivi les instructions fourni par sa datasheet : BY-8001-16P u-disk audio player - Audio - Arduino Forum
J'ai donc réalisé le montage suivant :
Je n'ai aucune idée de ce qui peut causer ces problèmes. Si quelqu'un peut me fournir de l'aide et m'expliquer d'où cela vient, je lui en serais très reconnaissant.
Merci d'avance pour toute aide.
[edit]
J'ai finalement trouvé moi-même la solution. Plutôt que d'utiliser les pins 0 et 1 de l'arduino pour communiquer avec le module, j'ai choisi les pins 10 et 9.
Bonjour et merci de votre réponse. J'avais vu ce post avant de publier le mien. J'ai bien branché le By8001 sur les broches 10 et 11. Le preuve c'est que j'arrive à faire jouer de la musique...Mon seul problème concerne cette fonction qui normalement renvoi le nombre de fichiers contenus sur la carte SD et que j'aimerais utiliser dans mon projet final.
Pour ceux qui sont intéressés : la datasheet du composant est ici
Le problème pourrait venir du fait que la bibliothèque n'est pas compatible de l'ESP8266. L'auteur utilise le mot clé word
pour stocker les valeurs. Pour un arduino, c'est l'équivalent d'un uint16_t
(entier non signé de 16 bits). Mais qu'en est-il de l'ESP8266 ?
Je te suggère de changer dans les fichiers BY8001.cpp et BY8001.h de la bibliothèque toutes les occurrences de word
en uint16_t
, de faire de même dans ton code, puis de recompiler et voir si ça fonctionne.
Rebonjour Lesept.
Je viens de faire les changements que tu as suggérés : remplacer les déclarations word en uint16_t dans mon sketch, dans BY8001.cpp et BY8001.h. Pas de succès, même problème.
La fonction getNumberOfTracksTF() renvoie toujours 0 (Zéro). Je viens de voir que la fonction getVolumeSetting() renvoie elle aussi 0. Je penchais pour un mauvais fonctionnement des fonctions de type "get" mais la fonction getFirmwareVersion() renvoie bien "OK20" et la fonction getFileNameCurrentTrack() renvoie correctement le nom du fichier à jouer. Ces 2 dernières renvoient des pointeurs sur des tableaux de char. (Je ne sais pas si je dis les choses comme il faut car je ne suis pas à l'aise aves les pointeurs !) Il semble que le pb touche les fonctions renvoyant des nombres. Le pb vient peut être des 2 fonctions suivantes dans la bibliothèque BY8001.cpp
void BY8001::rxFunc(int length){
// delay 130ms
unsigned long mTimer = millis(); while (millis() - mTimer < 130) {}
mp3Serial->readBytes(receiveBuffer, length);
}
et
uint16_t BY8001::getReply(int length, int offset){
rxFunc(length);
uint16_t value = strtoul(receiveBuffer + offset, NULL, 16);
return value;
}
Mes compétences en CPP ne sont pas suffisantes pour que je puisse débugger ces fonctions.
Il faut encore chercher ou trouver une solution de contournement.
Si quelqu'un a une autre idée, je suis preneur.
Petite précision : tous mes essais sont fait sur un Arduino Uno.
Merci à Lesept et merci d'avance aux autres.
Tu as mis le doigt dessus : sur l'ESP8266 un unsigned long est codé sur 4 octets donc 32 bits.
C'est donc uint32_t
et pas uint16_t
... (ou pas...)
Désolé Lesept, j'ai remplacé tous les "uint16_t" par "uint32_t" dans mon sketch, dans BY8001.cpp et BY8001.h et c'est la même chose.
Il faut chercher encore...Merci quand même.
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.