Actualmente estoy trabajando en un proyecto que reproduce música para ti. Mi pregunta para este hilo es, ¿es posible recuperar los nombres de las canciones dentro de la tarjeta micro SD que está insertada en el escudo?
Actualmente estoy cambiando el nombre de los archivos de canciones a track001, track002, track003, etc. Como se puede ver en el siguiente código:
const int arraySize = 5; char songs [arraySize] [15] = {{"track001.mp3"}, {"track002.mp3 "}, {" track003.mp3 "}, {" track004.mp3 "}, {" track005.mp3 "}};
Así es como estoy reproduciendo música con este escudo . No estoy muy contento con esto, ya que me gustaría poder insertar diferentes tarjetas micro SD en el escudo sin tener que cambiarles el nombre a track00X o sin tener que cambiar el código cada vez para que coincida con los nombres de las canciones.
Entonces, ¿es posible codificarlo para recuperar los nombres de las canciones de la tarjeta SD en lugar de tener que especificar su nombre en el código?
A continuación puede ver mi código completo:
#include <SPI.h> # include <Adafruit_VS1053.h> # include <SD.h> # define salida de pin 9_RES53 / BREAKOUT_RES53 / VS1053 Pin de selección de datos / comando (salida) #define SHIELD_CS 7 // Pin de selección de chip VS1053 (salida) #define SHIELD_DCS 6 // VS1053 Pin de selección de datos / comando (salida) #define CARDCS 4 // Pin de selección de chip de tarjeta # definir DREQ 3 // VS1053 Solicitud de datos, idealmente un pin de interrupción Adafruit_VS1053_FilePlay er musicPlayer = Adafruit_VS1053_FilePlayer (SHIELD_CS, SHIELD_DCS, DREQ, CARDCS); int volume = 20; const int arraySize = 5; char songs [arraySize] [15] = {{"track001.mp3"}, {"track002.mp3"} , {"track003.mp3"}, {"track004.mp3"}, {"track005.mp3"}}; int songNumber = 0; void setup () {Serial.begin (9600); musicPlayer.begin (); SD.begin (CARDCS); musicPlayer.setVolume (volumen, volumen); musicPlayer.useInterrupt (VS1053_FILEPLAYER_PIN_INT);}
void loop () {// Bajar el volumen if (musicPlayer.GPIO_digitalRead (7) == HIGH) {if (volume < 70) {volumen = volumen + 1; musicPlayer.setVolume (volumen, volumen); retraso (50); }} // Aumentar el volumen if (musicPlayer.GPIO_digitalRead (6) == HIGH) {if (volume > 0) {volume = volume - 1; musicPlayer.setVolume (volumen, volumen); retraso (50); }} // Iniciar el reproductor de música if (musicPlayer.GPIO_digitalRead (5) == HIGH) {if (! MusicPlayer.playingMusic) {musicPlayer.startPlayingFile (songs [songNumber]); }} // Pausar / Reanudar if (musicPlayer.GPIO_digitalRead (4) == HIGH) {if (! MusicPlayer.paused ()) {musicPlayer.pausePlaying (true); } else {musicPlayer.pausePlaying (falso); } retraso (500); } // Canción anterior if (musicPlayer.GPIO_digitalRead (3) == HIGH) {if (songNumber - 1 > = 0) {songNumber = songNumber - 1; } else {songNumber = arraySize - 1; } Serial.println (songNumber); musicPlayer.startPlayingFile (songs [songNumber]); retraso (500); } // Siguiente canción if (musicPlayer.GPIO_digitalRead (2) == HIGH) {if (songNumber + 1 < arraySize) {songNumber = songNumber + 1; } else {songNumber = 0; } Serial.println (songNumber); musicPlayer.startPlayingFile (songs [songNumber]); retraso (500); }}
Si esto es posible y alguien que lea esto sabe cómo hacerlo, realmente agradecería que me lo explicara e incluso proporcionara un ejemplo o incluso editara mi propio código si usted quiere. ¡Gracias! :)