Player arduino wav

Es qu on lire tous les formats audio avec ce lecteur arduino ou convertir dans un format spécial ?

Arduino lit les wav en temps réel et n utilise pas trop de ram.

Le fichier wav est lu mais quand on stop, on peut relire seulement après reset, il y a t il un code à rajouter sans faire reset ?

Merci.

on ne sait pas trop de quoi vous parlez, quel montage vous avez etc... Lisez les recommandations listées dans "Les bonnes pratiques du Forum Francophone”


la bibliothèque TMRpcm propose différentes fonctions pour gérer l'écoute:

	void play(char* filename);
	void stopPlayback();
	void volume(char vol);
	void setVolume(char vol);
	void disable();
	void pause();
	void quality(boolean q);
	void loop(boolean set);

la bibliothèque ne supporte que le PCM/WAV

Comment créer une liste défilante des wav de la sd card et lire ?

playerbuino.zip (1,2 Ko)

Lit wav nommer 2u.wav sur digital 9.

avec la bibliothèque SD ou SdFat

Avec case serial touche clavier pc fonctionne la lecture wav redémarre et s arrête mais si on utilise un bouton pour activer fonctionne une seule fois et redémarre plus avec ajout de break idem.

Comment faire en autonome sans serial ?

Ce n est pas compatible avec la librairie gamebuino, à tester avec le shield lcd.

Le switch se fait plus après l installation de librairie gamebuino.

#include <SPI.h>
#include <Gamebuino.h>
#include <EEPROM.h>
#include <stdlib.h>
#include <stdio.h>
#include <Arduino.h>

#include <pcmConfig.h>
#include <pcmRF.h>
#include <TMRpcm.h>
#include <SD.h>
Gamebuino gb;


#define SD_ChipSelectPin 10   //11//4 
const int speakerPin=9;
//char* file="bonjour.wav";
char* rep;
unsigned long previous=0;
unsigned long current=0;
extern const byte font5x7[];
unsigned long cc=64;

TMRpcm tmrpcm;
/*******************************************************************
 *                                MAIN
*******************************************************************/
void setup(){
  
/* function setup */
  gb.begin();
  gb.display.setFont(font5x7);  //change the font to the large one
  gb.titleScreen(F("Horloge-alarme"));
  gb.battery.show = true; //hide the battery indicator
  Serial.begin(9600);
  //Init sd shield
  if (!SD.begin(SD_ChipSelectPin)) {Serial.println("SD fail"); return; }

//Init speaker
tmrpcm.speakerPin = speakerPin;
tmrpcm.setVolume(3);
rep="2u.wav";
}

void loop(){
  
  
  //char* file=rep;
/* function loop */
if(gb.update()){
    //pause the game if C is pressed
    if(gb.buttons.pressed(BTN_C)){
    
    gb.titleScreen(F("Horloge-alarme"));
     
    }
  gb.display.fontSize = 1;
  gb.display.cursorX = 5;
  gb.display.cursorY = 5;
  gb.display.print(rep); 

 //if(gb.buttons.repeat(BTN_RIGHT,70/(gb.buttons.timeHeld(BTN_RIGHT))) ) {
         // ++cc;
         // delay(300);
// }
 //if(gb.buttons.repeat(BTN_LEFT,70/(gb.buttons.timeHeld(BTN_LEFT))) ) {
         // --cc;
         // delay(300);
 //}
 //if(gb.buttons.repeat(BTN_UP,70/(gb.buttons.timeHeld(BTN_UP))) ) {
 //rep=rep+((char)cc);
 //delay(500);
 //}
if(gb.buttons.repeat(BTN_DOWN,70/(gb.buttons.timeHeld(BTN_DOWN))) ) {
    activateOutput();
    
    }

    
      
}
}
/*******************************************************************
 *                               FUNCTIONS
 *******************************************************************/
 void activateOutput(){
/* function activateOutput */
Serial.println("Play sound");
char* file;
file=rep;
tmrpcm.quality(1);
tmrpcm.play(file);
while(tmrpcm.isPlaying()){
     delay(5000); //if(gb.buttons.repeat(BTN_LEFT,70/(gb.buttons.timeHeld(BTN_LEFT))) ) {
     tmrpcm.stopPlayback();
     //tmrpcm.disable();
     break;  
     }
    }
 // }//wait until file is played
//delay(1000);tmrpcm.stopPlayback(); // or wait 1sec and stop music

La lecture se fait 5 secondes et pour la lecture suivante pas de son mais le fichier est lu , la led clignote.

Peut on réinitialiser le pwm9 sans faire un reset ou un clear sram ?

Quand je mets en serial seulement tout fonctionne sur la même carte nano.

Postez votre code avec les balises de code et votre schéma