查看: 1583|回复: 2

【Fireduino】综合应用:按键控制Fireduino录音和播放

[复制链接]
  • TA的每日心情
    奋斗
    2022-9-16 05:52
  • 签到天数: 1368 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2016-12-21 16:33:29 | 显示全部楼层 |阅读模式
    分享到:

    经过了一些时日的学习,基本掌握了Fireduino常用的功能开发。从屏幕显示到按键的响应,从TF卡的读取到音频文件的播放,这些在学习的时候都是零零散散的完成各自的功能,一个完整的产品就是这些散碎功能的组合。这一次就做个小结,把前面用过的东西组装起来,跑通一个流程。当然,离实现一个产品还差的远,单纯的小结而已。
        本来还没拿到板子时的预期目标是做出一个完整的带有界面控制的播放器,然而屏幕的显示速度将我的目标彻底打乱,不到3秒才能显示一帧,即使优化后还要半秒多,这样的东西根本就没有办法使用,最多也就当个相框而已。无奈只能先摒弃界面,当作调试用吧。

        要完成这个流程,需要的功能有:
        1.TF卡的应用(录音保存和播放读取);
        2.按键的响应(控制录音和回放功能);
        3.录音并保存;
        4.音频文件回放;
        5.图形显示;

    下面开始:

    11.png
        为了做到功能和逻辑分离,我将各个功能重新封装了一下,这样在使用的时候可以更加方便的调用。由于懒,Audio还没有来得及封装,先凑合着用。主程序部分的初始化,包括按键的回调函数指定等。这里先画了个三角,提示状态,其实应该是红点来表示准备录音。

    12.png
        对按键的封装,其实就是转换了一下而已,没有做更多的工作。每个按键的动作都会在给定的回调函数中获得响应。
    13.png
        这里是核心了,就是录音的地方。Fireduino已经提供库了,但是封装之后可以减少主程序中的代码量,将一些操作隐藏起来。这里面其实就是先初始化TF卡,如果成功后再初始化录音器,都没有问题后就开始录音了。主程序只要调用这个函数即可。

    14.png
    15.png
        封装的东西就是这几个,再加上屏幕的,前面介绍过就不多说了。回到主程序中,最主要的地方就是按键的事件,因为整个流程都是在这里控制。我分别处理了按键的短按、长按和双击,其他的动作都被屏蔽掉没有使用。短按时开始录音,录音过程中再次短按控制暂停或继续。长按录音结束,并保存文件到TF卡中。双击开始播放这个录音文件。

    16.jpg
        屏幕只是做了个状态的提示,由于没有实现触摸的功能所以也就无法用屏幕控制了。

        功能基本上通了,但是还有些Bug,比如在重新上电的前几秒,运行速度很慢,好像是哪里占用了大量的处理器,没有找到这个地方;有时候Record初始化不能通过,也还没有解决。后面打算找找这些原因,然后把Audio封装一下再来运行试一试。



    回复

    使用道具 举报

  • TA的每日心情
    开心
    2017-5-11 10:52
  • 签到天数: 30 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2016-12-21 17:51:08 | 显示全部楼层
    除了代码,其他都假装看懂了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2017-10-15 13:21
  • 签到天数: 183 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2016-12-21 17:56:29 | 显示全部楼层
    谢谢分享                        
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-4-17 05:45 , Processed in 0.138662 second(s), 20 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.