Bonjour,
J'essaie de diffuser sur un mini haut-parleur un fichier son, qui est stocké sur une micro SD reliée à mon Arduino Uno par un shield.
Le haut-parleur est un CQRobot 8 Ohm. Je précise, au cas où cela pourrait avoir une incidence, que comme les fils du haut-parleur étaient de type Dupont, je les ai coupés au bout et je les ai ressoudés avec des fils monobrins (branchés ensuite sur ma breadboard). Comme c'est la première fois que j'utilise des mini haut-parleurs et que je voulais être sûre que mes soudures avaient bien marché, j'ai d'abord utilisé l'exemple de l'IDE Arduino "toneMelody", qui joue une petite mélodie. Tout fonctionnait parfaitement, le son était clair et à un volume normal.
Je suis ensuite passée à l'étape suivante : diffuser dans le haut-parleur un son stocké sur une micro SD. Je n'ai eu aucun souci avec le shield. J'ai enregistré mon son au format .wav, avec un nom de fichier court et clair, en mono et en 8bits. J'utilise les bibliothèques SD et TMRpcm. Le code compile, et l'Arduino me renvoie bien que le fichier existe et qu'elle le lit, mais aucun son ne sort du haut-parleur. Je réessaye entre temps le "toneMelody", toujours pas de problème.
J'essaie alors différentes solutions pour régler le problème :
-
Augmenter drastiquement le volume. Cela me permet de découvrir que le haut-parleur grésille. En le remettant presque au plus bas, j'entends alors en collant l'oreille au haut-parleur qu'il y a un grésillement beaucoup plus faible, mais aussi que le fichier est joué (mais à un volume très bas, donc, et caché à moitié par le grésillement de même volume). Quand je remets le volume plus haut, le grésillement est plus haut, mais le son du fichier ne s'entend plus du tout.
-
Comme mon code compile, que le fichier est trouvé et que les haut-parleurs ont quand même l'air de fonctionner très bien avec le "toneMelody", je me demande si c'est mon fichier son qui n'est pas correct. Je tente donc avec deux autres fichiers sons, dont un proposé en démo par la bibliothèque TMRpcm. Mais même souci.
-
Pour finir, j'ai tenté avec un autre mini haut-parleur, de même modèle, mais dont je n'avais pas coupé et ressoudé les fils (en me disant que c'était peut-être la longueur des nouveaux qui posait problème). Même problème.
Je vous mets le code ci-dessous.
#include <SPI.h>
#include <SD.h>
#define SD_ChipSelectPin 10
#include <pcmConfig.h>
#include <pcmRF.h>
#include <TMRpcm.h>
TMRpcm tmrpcm;
void setup() {
tmrpcm.speakerPin = 9;
Serial.begin(9600);
if (!SD.begin(SD_ChipSelectPin)) {
Serial.println("SD fails");
return;
}
if (SD.exists("essai.wav")) {
Serial.println("jexiste");
} else {
Serial.println("jenexistepas");
}
tmrpcm.setVolume(1);
if (!tmrpcm.isPlaying()) {
tmrpcm.play("essai.wav");
Serial.println("eureka");
} else {
Serial.println("echec");
}
}
void loop(){
}
Côté électronique, où j'ai eu beaucoup plus de mal, mon montage est copié de celui-là.
La seule différence, c'est que j'ai mis une résistance 220 ohm à la place de la 100 ohm (que je n'avais pas). Mais même le transistor est identique (un NPN2222).
J'ai l'impression tout de même que le problème pourrait venir de cette partie électronique (où je suis ultra novice), mais je n'en suis pas sûre. Qu'en pensez-vous ? Quelqu'un a-t-il déjà eu ce souci ?
N'hésitez pas non plus à me dire si mes explications ne sont pas claires, ou s'il manque des éléments.
Merci beaucoup d'avance pour votre aide,
Florence