2回答

1收藏

【赚周年币】技术贴-----(6)Fireduino TF卡音乐测试

#线上活动 #线上活动 2430 人阅读 | 2 人回复 | 2016-12-10

本帖最后由 wambob 于 2016-12-10 17:58 编辑

        先学习下官方的资料。
Fireduino Audio
         Fireduino 内部集成了HIFI级高质量的音频解码器、专业的硬件MP3解码加速器、硬件低损耗音频解码加速器和丰富的外设,支持WI-FI协议,支持24bits 192k Hz 采样率、低损耗、低功耗的音频解码。
        Fireduino 支持播放在SD卡以及网络上的音频文件,解码格式支持APE/FLAC/WAV/MP3/WMA/AAC/OGG;
官方的例程
  1. #include <Arduino.h>
  2. #include "TF.h"
  3. #include "Audio.h"
  4. void setup() {
  5.         Serial.begin(115200);
  6.         Serial.print("\r\narduino setup ...\r\n");
  7.         if(!SD.begin())
  8.         {
  9.                 Serial.println("sd init err\r\n");
  10.                 while(1);
  11.         }
  12.         Audio.begin(AUDIO_SD);
  13.         if(Audio)
  14.         {
  15.                 Audio.playFile("\\4.MP3");
  16.         }
  17. }
  18. void loop() {
  19.         Serial.println("loop");
  20.         delay(2000);
  21.         if(Audio.getStatus() == AudioStop)
  22.         {
  23.                 Audio.playFile("\\3.MP3");
  24.         }
  25. }
复制代码
可以看到使用了音频和TF卡头文件
  1. #include "TF.h"
  2. #include "Audio.h"
复制代码
程序中使用了如下API,开始、播放和获得播放状态
  1. Audio.begin()
  2. Audio.playFile()
  3. Audio.getStatus()
复制代码

准备好mp3音乐文件,一个是官方社区的
Strongest.rar (2.37 MB, 下载次数: 0)
,一个是从网上下载的
singmetoyou.rar (5.3 MB, 下载次数: 0)
,两个我都改了下名字,为何?接着看,先看看mp3文件属性

先烧代码吧,修改好官方例程里的音乐文件后,下载代码,结果并没有预期想象中的音乐。打开串口,一步一步加串口输出调试。首先在setup()中加了检测串口。
  1. while(!Serial);
复制代码
再次下载,串口助手有输出了,但结果是
  1. arduino setup
  2. sd init err
复制代码
技术在于折腾,好吧,换个卡。把我手机里的闪迪8G卡去了出来,比较了下,除了丝印,看不出所以然


继续编译上传工作。这次倒是不出
  1. sd init err
复制代码
而是

但是依然没有音乐。看了下官方例程里的是MP3,改成了小写mp3测试,为了更保险,名字里也去掉了空格。也在里面添加了串口输出语句
  1. if(Audio)
  2.         {
  3.    Serial.println("sd ok?\r\n");
  4.                 Audio.playFile("\\Strongest.mp3");
  5.         }
复制代码
再次编译上传代码,等了几分钟吧,也许说的时间有点长,什么情况下感觉时间过的慢?等待的时候!
耳机终于有音乐了!串口输出

在loop里又添加了一段代码
  1. void loop() {
  2.         Serial.println("loop");
  3.         delay(2000);
  4. //        if(Audio.getStatus() == AudioStop)
  5. //        {
  6. //    Serial.println("song1 ok!\r\n");
  7. //                Audio.playFile("\\Strongest.mp3");
  8. //        }
  9.   if(Audio.getStatus() == AudioStop)
  10.   {
  11.     Serial.println("song2 ok!\r\n");
  12.     Audio.playFile("\\singmetoyou.mp3");
  13. }
  14. }
复制代码

整个代码
  1. #include <Arduino.h>
  2. #include "TF.h"
  3. #include "Audio.h"

  4. void setup() {
  5.   Serial1.begin(115200);
  6.   Serial.begin(115200);
  7.   while(!Serial);
  8.   Serial1.print("\r\n FireDuino Setup ...\r\n");
  9.         Serial.print("\r\narduino setup ...\r\n");

  10.         if(!SD.begin())
  11.         {
  12.                 Serial.println("sd init err\r\n");
  13.                 while(1);
  14.         }

  15.         Audio.begin(AUDIO_SD);
  16.         if(Audio)
  17.         {
  18.    Serial.println("sd ok?\r\n");
  19.                 Audio.playFile("\\Strongest.mp3");
  20.         }

  21. }

  22. void loop() {
  23.         Serial.println("loop");
  24.         delay(2000);
  25. //        if(Audio.getStatus() == AudioStop)
  26. //        {
  27. //    Serial.println("song1 ok!\r\n");
  28. //                Audio.playFile("\\Strongest.mp3");
  29. //        }
  30.   if(Audio.getStatus() == AudioStop)
  31.   {
  32.     Serial.println("song2 ok!\r\n");
  33.     Audio.playFile("\\singmetoyou.mp3");
  34. }
  35. }
复制代码

评分

参与人数 1 +20 收起 理由
loveeeboard + 20

查看全部评分

分享到:
回复

使用道具 举报

回答|共 2 个

倒序浏览

沙发

jackten

发表于 2016-12-10 19:02:08 | 只看该作者

楼主是活动领取的板子吗?         
板凳

wambob

发表于 2016-12-10 21:51:48 | 只看该作者

jackten 发表于 2016-12-10 19:02
楼主是活动领取的板子吗?

申请的                    
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条