כרגע אני עובד על פרויקט שמנגן עבורך מוזיקה. השאלה שלי לשרשור זה היא האם ניתן לאחזר את שמות השירים בתוך כרטיס המיקרו SD שמוכנס למגן? וכו 'כפי שניתן לראות בקוד הבא:
const int arraySize = 5; שירי char [arraySize] [15] = {{"track001.mp3"}, {"track002.mp3 "}, {" track003.mp3 "}, {" track004.mp3 "}, {" track005.mp3 "}};
ככה אני מנגן כרגע מוסיקה עם המגן הזה . אני לא מרוצה מכך מכיוון שהייתי רוצה להכניס כרטיסי מיקרו SD שונים למגן מבלי שאצטרך לשנות את שמם ל- track00X או מבלי שאצטרך לשנות את הקוד בכל פעם כדי להתאים לשמות השירים.
אז, האם ניתן לקודד אותו כדי לאחזר את שמות השירים מכרטיס ה- SD במקום שיהיה צורך לציין את שמם בקוד?
למטה תוכלו לראות את הקוד המלא שלי:
#include <SPI.h> # include <Adafruit_VS1053.h> # include <SD.h> # define BREAKOUT_RESET 9 // VS1053 resetd output (pin_def10) / VS1053 סיכה לבחירת נתונים / פקודה (פלט) #define SHIELD_CS 7 // VS1053 pin pin pin (output) #define SHIELD_DCS 6 // VS1053 Data / command pin pin (output) #define CARDCS 4 // Pin pin pin pin בחר DREQ 3 // VS1053 בקשת נתונים, באופן אידיאלי סיכה להפסיק Adafruit_VS1053_FilePlay er musicPlayer = Adafruit_VS1053_FilePlayer (SHIELD_CS, SHIELD_DCS, DREQ, CARDCS); int volume = 20; const int arraySize = 5; שירי char [arraySize] [15] = {{"track001.mp3"}, {"track002.mp3"} , {"track003.mp3"}, {"track004.mp3"}, {"track005.mp3"}}; int songNumber = 0; התקנת חלל () {Serial.begin (9600); musicPlayer.begin (); SD.begin (CARDCS); musicPlayer.setVolume (נפח, נפח); musicPlayer.useInterrupt (VS1053_FILEPLAYER_PIN_INT);}
loop loop () {// נפח נמוך יותר אם (musicPlayer.GPIO_digitalRead (7) == HIGH) {if (volume < 70) {volume = volume + 1; musicPlayer.setVolume (נפח, נפח); עיכוב (50); }} // הגדל את עוצמת הקול אם (musicPlayer.GPIO_digitalRead (6) == HIGH) {if (volume > 0) {volume = volume - 1; musicPlayer.setVolume (נפח, נפח); עיכוב (50); }} // התחל נגן מוסיקה אם (musicPlayer.GPIO_digitalRead (5) == HIGH) {if (! MusicPlayer.playingMusic) {musicPlayer.startPlayingFile (שירים [songNumber]); }} // השהה / המשך אם (musicPlayer.GPIO_digitalRead (4) == HIGH) {if (! MusicPlayer.paused ()) {musicPlayer.pausePlaying (true); } אחר {musicPlayer.pausePlaying (שקר); } עיכוב (500); } // שיר קודם אם (musicPlayer.GPIO_digitalRead (3) == HIGH) {if (songNumber - 1 > = 0) {songNumber = songNumber - 1; } אחר {songNumber = arraySize - 1; } Serial.println (songNumber); musicPlayer.startPlayingFile (שירים [songNumber]); עיכוב (500); } // השיר הבא if (musicPlayer.GPIO_digitalRead (2) == HIGH) {if (songNumber + 1 < arraySize) {songNumber = songNumber + 1; } אחר {songNumber = 0; } Serial.println (songNumber); musicPlayer.startPlayingFile (שירים [songNumber]); עיכוב (500); }}
אם זה אפשרי ומישהו שקורא את זה יודע לעשות זאת, אודה לך מאוד אם תסביר לי את זה ואפילו תביא דוגמה או אפילו תערוך את הקוד שלי אם אתה רוצה. תודה! :)