Jouer un fichier audio .wav avec l’Arduino
Pour jouer un fichier audio sur l’Arduino je pensais à tors qu’un shield MP3 était nécéssaire.
En fait, un simple lecteur de carte SD ou Micro SD peut faire l’affaire pour jouer un fichier WAV . La qualité n’est pas au rendez-vous comparé au MP3 mais ce “système D” vaut la peine d’être parcouru.
Ce dont vous aurez besoin
- Un module carte SD Arduino – Disponible ici
- Un arduino – Disponible ici
- un haut-parleur – Disponible ici
Branchements
- MOSI – pin 11
- MISO – pin 12
- CLK – pin 13
- CS – Dépend du module (pin 10)
- VCC – 5V
- GND – GND
Dans un premier temps connectez le lecteur de carte SD à l’arduino.
Connectez ensuite votre speaker à la pin 9 de l’Arduino et au GND.
Niveau branchement c’est terminé on va maintenant convertir nos fichiers .WAV pour qu’ils soient lisible par l’Arduino.
Convertir les fichiers WAV
Tout d’abord j’ai téléchargé quelques effets audio sur le site: Soundbibble.com
Ensuite téléchargé et installé le logiciel: R8Brain
Une fois le logiciel installé il faut convertir les fichiers en 32Mhz, 8 bits. Il semblerait néanmoins que 16Mhz soit préconisé.
Pour terminer la partie SD, j’ai déposé ce fichier son sur ma carte SD dans un dossier nommé “sounds”. Et replacé la carte SD dans le module connecté à l’Arduino.
Le code Arduino
Télécharger la librairie TMRpcm
Copiez et téléversez le code dans l’Arduino
//www.idehack.com
#include <SPI.h>
#include <SD.h> // Inclure la librairie SD
#define SDPIN 10 // Chip Select du lecteur SD
#include <TMRpcm.h>
File myFile;
TMRpcm tmrpcm;
char caractere; // Définition du caractère pour la gestion dans le moniteur série
void setup(){
Serial.begin(9600); // début de la communication série
tmrpcm.speakerPin = 9; // Speaker sur la pin 9
tmrpcm.setVolume(4); // gestion du volume de 0 à 7
tmrpcm.quality(1); // qualitée audio 0 ou 1
// Initialisation de la carte SD
if (!SD.begin(SDPIN)) {
Serial.println("initialization failed!"); // S'il y a un soucis "initialization failed!" s'affichera au moniteur
return;
}
Serial.println("tapez un caractere -> a");
}
void loop(){
if(Serial.available()){
caractere = Serial.read();
if(caractere == 'a'){ // Si le caractère recu dans le moniteur série est "a"
Serial.println("Lecture"); // Ecrit dans le moniteur série
tmrpcm.play("sounds/son8bit.wav"); // Joue le son "son8bit.wav"
}
}
}
void playSound(char *file){
tmrpcm.play(file);
return;
}Une fois le code téléversé sur l’Arduino, lancez le moniteur série et envoyez le caractère “a”.
Résultat (audio)
Source: Instructable | Youtube | Blog
0 commentaires