回答

收藏

【赚周年币】技术贴——Fireduino Audio学习之播放TF上音乐

#线上活动 #线上活动 1711 人阅读 | 0 人回复 | 2017-01-06

本帖最后由 9robot 于 2017-1-6 20:30 编辑

      学习过Fireduino的TF卡操作之后,紧接着就是如何播放TF卡上音乐文件,Fireduino比较好的一点是官网提供了资料和示例代码,使入门更简单一些。
Fireduino 内部集成了HIFI级高质量的音频解码器、专业的硬件MP3解码加速器、硬件低损耗音频解码加速器和丰富的外设,支持WI-FI协议,支持24bits 192k Hz 采样率、低损耗、低功耗的音频解码。

Fireduino 支持播放在SD卡以及网络上的音频文件,解码格式支持APE/FLAC/WAV/MP3/WMA/AAC/OGG;

Fireduino Audio API 提供了播放、暂停、停止、以及设置和获取声音大小等。

Fireduino Audio 相关结构体
// playing status
typedef enum
{
        AudioFailed = 0,
        AudioPlay ,
        AudioPause ,
        AudioStop ,
}AudioStatus;
typedef enum
{
        AUDIO_SD,         // SD
        AUDIO_NET              // NET
}Storage;

Fireduino Audio API
begin(...)
   说明
       初始化 Audio。
   语法
       Audio.begin(AUDIO_NET);
       Audio.begin(AUDIO_SD);
   参数
       Storage:AUDIO_SD、AUDIO_NET  
   返回
       无

playFile(...)
   说明
       播放指定文件。
   语法
       Audio.playFile("\\4.MP3");
   参数
       char * :文件路径
   返回
       无

playNetFile(...)
   说明
       播放网络资源的地址(仅支持http协议)。
   语法
       Audio.playNetFile("http://192.168.199.240/%E6%89%93%E8%80%81%E8%99%8E.MP3");
   参数
      char* :网络资源地址。
   返回
       无

setVolume(...)
   说明
       设置声音大小
   语法
        Audio. setVolume(16);
   参数
      int :声音大小(0~31)
   返回
       无

getVolume(...)
   说明
       获取声音大小
   语法
      Audio. getVolume();
   参数
       无
   返回
      音量大小值

pause()
   说明
       暂停播放。
   语法
       Audio. pause();
   参数
       无
   返回
       无

resume()
   说明
       恢复播放。
   语法
       Audio. resume();
   参数
       无
   返回
       无

stop()
   说明
       停止播放。
   语法
      Audio. stop();
   参数
       无
   返回
       无

getStatus()
   说明
       获取播放状态。
   语法
       Audio. getStatus();
   参数
       无
   返回
      返回状态

end()
   说明
       结束使用Audio,与begin 相反。
   语法
       Audio. end();
   参数
       无
   返回
       无
  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.     Audio.setVolume(2);
  17.   }

  18. }

  19. void loop() {
  20.   Serial.println("loop");
  21.   delay(2000);
  22.   if(Audio.getStatus() == AudioStop)
  23.   {
  24.     Audio.playFile("\\3.mp3");
  25.   }
  26. }
复制代码
在这次试验中发现一些问题:
1、刚开始时,按照官网提供的程序学习,但是不管怎么操作,时钟无法成功播放音乐文件,后来实在找不出原因,就猜会不会是内存卡的原因,然后就换了一张卡,结果还是一样的代码,就可以播放音乐,然后就尝试多次,进行验证。手里有一张三星的Class 4的8G内存卡,无法播放音乐;另一张是闪迪的Class 10的16G内存卡,播放没有问题。
2、随着使用Fireduino的时间长了,发现RESET按键存在一些不足,有时需要多次按下才可以复位,或者是按的试件长一些,单次短按基本上是不会成功复位,这一点我不太清楚当初设计时是不是就是这样设计的,但使用时确实感觉有一些不习惯

       总体来说,Fireduino播放音乐时声音还是不错的,音质感觉不错,声音也比较大, 声音分为0~31级,和当初买的MP3是一样的设计,当设置在2时,声音也是挺大的,先体验一下Fireduino的音乐!

audio.zip

540 Bytes, 下载次数: 0

评分

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

查看全部评分

分享到:
回复

使用道具 举报

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

本版积分规则

关闭

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