audio - Arduino mega2560 在读取另一个文件时播放 mp3 文件
问题描述
我的设置是由 Arduino Mega2560 和 Adafruit 的 Music Maker shield 构建的。我正在运行他们的“player_simple”示例并(通过耳机)收听在后台播放的 mp3。那是工作。
一旦我尝试从同一张 SD 卡读取额外的二进制文件,在听音乐的同时,我会通过耳机听到白噪声。此外,从 SD 卡读取二进制文件失败。重置 Arduino 几次后(通过按下板上的第一个按钮),我设法听到音乐,但二进制文件的读取从未发生。
问题:
- 我想知道我做错了什么?(见下面的代码)
- 在后台播放歌曲(加载在同一张 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);
}
解决方案
推荐阅读
- python - 避免将重复项添加到存储在数据库中的列表的更好方法是什么
- amazon-web-services - 如何为 API Gateway 使用服务到服务和 Cognito 身份验证
- r - 如何将短列表 (#1) 与更大的列表 (#2) 匹配,并使用列表 #2 中的数据获取长度为 #1 的列表
- laravel - vue数据有时不显示!但有时工作!为什么?
- elasticsearch - logstash:从时间戳部分创建指纹
- javascript - 如何访问具有相同类名的多个 Quill 实例的 innerHTML?
- vb.net - VB.NET:未声明 VBA PowerPoint 常量
- aws-lambda - 保存和测试 AWS Lambda 函数
- c - C Tcl 命令未被识别
- google-apps-script - 使用应用脚本输入数据后,是否可以保护谷歌表格中的单元格和范围?