查看: 1431|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2024-9-22 22:20
  • 签到天数: 944 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2017-1-6 20:26:59 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 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

    查看全部评分

    回复

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-11-23 13:35 , Processed in 0.146316 second(s), 20 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.