Audio Arduino mega2560在读取其他文件时播放mp3文件

Audio Arduino mega2560在读取其他文件时播放mp3文件,audio,arduino,read-write,simultaneous,Audio,Arduino,Read Write,Simultaneous,我的设置是由Arduino Mega2560构建的,带有Adafruit的音乐制作盾。 我正在运行他们的“player\u simple”示例,并(通过耳机)收听背景中播放的mp3。 这就是工作 当我试图从同一张SD卡上读取额外的二进制文件时,在听音乐的同时,我通过耳机听到了白噪音。 此外,从SD卡读取二进制文件失败。 在重置Arduino两次后(通过按下电路板上的rst按钮),我能够听到音乐,但二进制文件的读取从未发生过 问题: 我想知道我做错了什么?(见下面的代码) 在后台播放歌曲(加载在同

我的设置是由Arduino Mega2560构建的,带有Adafruit的音乐制作盾。 我正在运行他们的“player\u simple”示例,并(通过耳机)收听背景中播放的mp3。 这就是工作

当我试图从同一张SD卡上读取额外的二进制文件时,在听音乐的同时,我通过耳机听到了白噪音。 此外,从SD卡读取二进制文件失败。 在重置Arduino两次后(通过按下电路板上的rst按钮),我能够听到音乐,但二进制文件的读取从未发生过

问题:

  • 我想知道我做错了什么?(见下面的代码)
  • 在后台播放歌曲(加载在同一张SD卡上)时,是否有从SD卡读取二进制文件的选项
  • 以下是守则的相关部分:

    void setup{
        if (! musicPlayer.begin()) { // initialize the music player
            Serial.println(F("Couldn't find VS1053, do you have the right pins defined?"));
            while (1);
        }
        Serial.println(F("VS1053 found"));
          
        if (!SD.begin(CARDCS)) {
            Serial.println(F("SD failed, or not present"));
            while (1);  // don't do anything more
        }
        // Set volume for left, right channels. lower numbers == louder volume!
        musicPlayer.setVolume(20,20);
        
        // If DREQ is on an interrupt pin (on uno, #2 or #3) we can do background
        // audio playing
        musicPlayer.useInterrupt(VS1053_FILEPLAYER_PIN_INT);  // DREQ int
        
        // Play another file in the background, REQUIRES interrupts!
        musicPlayer.startPlayingFile("/e01.wav");
        
        myFile = SD.open("S1F25.bin"); // open the binary file 
        Serial.print (" myfile.read() = ");
        Serial.println (myFile.read());
        }
        void loop() {
        volume_control();
        if (musicPlayer.stopped()) {
            Serial.println("Done playing music");
            while (1) {
               delay(10);  // we're done! do nothing...
            }
        }
        delay(100);
    }
        
    void volume_control(){
        volume = volume + 1;
        if (volume > 90){volume = 90;}
        musicPlayer.setVolume(volume,volume);
    }
    

    您是否打算在
    设置
    函数中定义
    循环
    函数?这就是您的代码显示的内容。此外,您是否临时运行了禁用(例如,注释掉)您的音乐播放器的测试,并验证您的文件读取工作正常?你试过反过来吗?首先要做的是:确保每个函数都能独立工作。然后在它们一起运行时处理这个问题。循环不在setup函数内(复制/粘贴代码时存在缩进问题)。根据您的评论-我确实检查了我是否只能RD SD卡,并且-只能播放音乐。是的,我能。因此,只有当我播放歌曲并试图读取二进制文件时,问题才存在。