ESP8266 Audio库不会使用

程序单独使用可以播放音频但是放在程序中就无法播放音频了

以下是单独使用的程序(可以正常使用)
void loop()
{
switchVal = digitalRead(SWITCH_PIN);
Serial.println(switchVal);

if (mp3->isRunning()) { // 是否在播放
if (!mp3->loop()){ // 是否播放完了
mp3->stop(); // 停止播放
delete file;
delete mp3;
mp3 = new AudioGeneratorMP3();
}
} else {
if (switchVal == 0) { // 开关接通为低电平
file = new AudioFileSourceSPIFFS("/music.mp3"); // 初始化音频文件
Serial.printf("MP3 done\n");
delay(1000);
mp3->begin(file, out); // 开始播放文件
}
}
}

无法播放音频的程序段
if (digitalRead(D1) == 0) {
delay(5000);
Serial.println("5s Start.");
while (digitalRead(D1) == 0) {
thetim1 = millis(); //计时开始
Serial.printf(" time start ");
do {
analogWrite(LedPin, brightness); //灯光常亮
delay(1000);
//music
if (mp3->isRunning()) { // 是否在播放
if (!mp3->loop()) { // 是否播放完了
mp3->stop(); // 停止播放
delete file;
delete mp3;
mp3 = new AudioGeneratorMP3();
ilk2 = 0;
}
} else {
if (ilk2 == 0) { //自锁
file = new AudioFileSourceSPIFFS("/music.mp3"); // 初始化音频文件
Serial.printf("MP3 done\n");
delay(1000);
mp3->begin(file, out); // 开始播放文件
ilk2 = 1;
}
}
//music
while (digitalRead(D1) == 1) {
delay(3000);
if (digitalRead(D1) == 1) {
analogWrite(LedPin, 0);
int lswc = 1; //app拉屎完成提醒
Serial.println(" shit finish ");
delay(1000);
goto bailout;
} else {
Serial.println(" break ");
break;
}
}
thetim2 = millis();
num1 = thetim2 - thetim1;
Serial.println(" get time ");
} while (num1 < tim);

mp3->begin(file, out);
这个接口调用有错误码返回值吗,有的话打印出来看下错误码多少


if (digitalRead(D1) == 0) {
    delay(5000);
    Serial.println("5s Start.");
    while (digitalRead(D1) == 0) {
        thetim1 = millis(); //计时开始
        Serial.printf(" time start ");
        do {
            analogWrite(LedPin, brightness); //灯光常亮
            delay(1000);
            //music
            if (mp3->isRunning()) { // 是否在播放
                if (!mp3->loop()) { // 是否播放完了
                    mp3->stop(); // 停止播放
                    delete file;
                    delete mp3;
                    mp3 = new AudioGeneratorMP3();
                    ilk2 = 0;
                }
            } else {
                if (ilk2 == 0) { //自锁
                    file = new AudioFileSourceSPIFFS("/music.mp3"); // 初始化音频文件
                    Serial.printf("MP3 done\n");
                    delay(1000);
                    mp3->begin(file, out); // 开始播放文件
                    ilk2 = 1;
                }
            }
            //music
            while (digitalRead(D1) == 1) {
                delay(3000);
                if (digitalRead(D1) == 1) {
                    analogWrite(LedPin, 0);
                    int lswc = 1; //app拉屎完成提醒
                    Serial.println(" shit finish ");
                    delay(1000);
                    goto bailout;
                } else {
                    Serial.println(" break ");
                    break;
                }
            }
            thetim2 = millis();
            num1 = thetim2 - thetim1;
            Serial.println(" get time ");
        } while (num1 < tim);
    }
}

你代码不完整啊,灯能亮吗?

可以参考https://www.jianshu.com/p/88e789a4b9de