基于Arduino的可扩展设备|电子词典|音乐播放器|手电筒|倒计时-Arduino中文社区 - Powered by Discuz! Archiver

东风早已破晓 发表于 2022-8-13 18:11

基于Arduino的可扩展设备|电子词典|音乐播放器|手电筒|倒计时

本帖最后由 东风早已破晓 于 2022-8-14 13:28 编辑

各位好啊,这是“基于Arduino的可扩展功能性设备”的介绍~

本介绍分为三部分:作品展示、作品介绍、实现这些功能的技术细节&探究时的心路历程
(最后还有开源资料下载地址)

一. 作品展示
            (展示视频在做了在做了)

外观




基础功能界面


扩展功能界面(还没有做任何功能QAQ)

音乐选择界面

查单词 界面


二. 作品介绍
    1.创作缘由
    普通学生党看到家里有一块吃灰的mega2560,不想让它吃灰,且高一人刚好需要电子词典,于是就想做一款基于Arduino的电子词典,然后用洞洞板手搓出成品。搞完后觉得功能太少,就加入了音乐播放功能,就可以睡觉前听古诗了。(那个时候写的介绍基于Arduino的可扩展设备|电子词典|音乐播放器|By罗炫凌-Arduino中文社区 - Powered by Discuz!)
      高三时在偷偷躺班里讲台上午睡,怕睡过头被同学发现,于是加入了倒计时功能。毕业后想着这以后能做大学宿舍集控,就学了画PCB和重新打印外壳,增强了扩展性,它也成了现在的样子。
      2.作品功能介绍(详细技术细节在下面)
      交互界面
      操作逻辑自认为设计的挺好,主要的操作都是符合人类直觉的
         图形设计.......全静态设计.......有点丑,勿喷qaq

      电子词典
      使用了网上找的 .txt词库(受该词库影响,只能查单词) ,手动按首字母给词库文件分了类(不会用c的文件操作),并使用 遍历文件中每个字符的方法 来查找单词,虽说这样查部分单词会有点慢,但能用(比翻牛津厚砖快)。

      音乐播放器
         使用了现成的库SimpleSDAudio
          做了 音乐选择界面 和 列表/单曲循环播放功能(受该库影响,音乐需要转成该库作者自创格式,且 有复杂文件名的音乐可能难以播放。我的解决办法先如图处理音频文件,然后再编辑UI界面,将音乐名和编号对上位)
         本来想做音乐播放的控制界面,但是Arduino是单线程的,我又不可能读懂这个库 再写一个伪多线程程序(有一个好的解决方法就是买一个触屏串口屏,能与这个库的串口通信功能完美匹配)

      手电筒
      除了控制开关灯数量外,这功能就很普通。但它除了在功能选择界面使用,也能在主界面使用(一开机就能用手电筒,比较方便)
      
      倒计时
      可以输入00到99小时的倒计时,可以在程序里给蜂鸣器编辑铃声,可以设置屏幕的开关


三. 技术细节&心路历程
            1、词典文件
          从网上下载的,原词典文件长这样
         
            然后我把它手动分成这样,这样就让词语搜索程序的编写变得简单了
            
         (很累啊(不会c文件操作的锅

       2、键盘布线和程序的设计
         为了偷懒,键盘程序的设计我就直接搜社区内的现有想法了(笑
          [教程] 纯代码实现4*4矩阵键盘
            简单来说就是用坐标表示按钮位置
            布线的话嘛......看图
         
         (这是最早尝试时焊的板)

       3、显示屏的选择
         唉,往事不堪回首,被字库和兼容折磨死了
         买买退退了许多显示屏,最后选择了这款(选触摸版更好,可以在音乐控件上整一些骚操作)
             这个屏自带字库、串口通信为主、附带UI设计软件,省了很多麻烦
         
            (非带货)

       4、词语搜索程序
         一个词语分俩行,第一行单词,第二行音标和词性、词语释义(音标词性中一般含有四个空格,于是我就用第五个空格作为分界线分开词性和词语释义)
         
             我的思路是用myFile.read()逐个读取文档中的字符,读取的字符直接输出(所以查词语的时候只能向下翻页,不能向上,且遇到co开头的词查询速度就很低。 如果想要高效,可以把每个单词提取出来,一个单词一个txt,再用SD库的文件搜索来搜索单词(我没空搞:'())。第一行是单词,先存放在数组中,检测到单词后的回车就与要查找的单词进行比较,如果相同就输出,然后换行继续输出;如果不是,就清空这个临时数组,继续查找单词。第二行输出音标和释义,检测到第五个空格时换行。第三行输出释义,先输出200个字符,之后按一次方向下键就输出200个字符,输出完毕后等待一会,自动清屏,进入下一次单词查找。

          5、音乐播放器
          我找现成的音乐播放的方法,找到两种
          这个播放.wav文件https://www.basemu.com/speaker-with-arduino-and-micro-sd.html
         这个播放起来很麻烦,但是功能多,我选择这种 https://www.arduino.cn/forum.php?mod=viewthread&tid=2944&highlight=%E9%9F%B3%E4%B9%90
         (感谢饺子分享的方法,但是讲的并不清楚,我最终还是读了官网的英文才搞懂的
         SimpleSDAudio虽然功能众多,但需要用自带的转换器转换格式,但借此可以输出高质量&双声道音乐(高质量音乐看官网好像还要加一个芯片,我就没有尝试
   对于音乐播放器的人机交互,当然最好是能把SD卡里的音乐表现成一个选择界面供选择,还有下一曲等功能,但是我找了试了很久都找不到能读取文件名并储存经数组的方法(有大佬知道可以在评论区里说出来,谢谢),而且我试了很多种方法,都不能做到在播放音乐时用按钮进行暂停播放等操作(在SimpleSDAudio的例程中是可以用串口监视器实现的,是不是因为arduino不能并行处理的原因?
   所以我就只能做到手动输入文件名和循环播放音乐的功能
          缺点:麻烦,麻烦,还是麻烦

(本来想做音乐播放控件,亏我还画了个界面








--------——————————开源资料分享————————————
         百度网盘链接:https://pan.baidu.com/s/1AVQN3RipszavVGq8m8dd3w?pwd=2333
         提取码:2333
         我在这里把所有的资料源码都分享出来,秉承开源精神,并感谢社区的大佬们在提问区给我的帮助。
      若大家有好的想法,欢迎分享在本帖评论区 或者 单独发帖,把帖的地址留在本帖评论区。
         (其实就是想看看大家有没有做好的功能能塞进来用

         

         感谢各位的阅读











你妹 发表于 2022-10-14 11:29

:lol:lol:lol:lol
页: [1]
查看完整版本: 基于Arduino的可扩展设备|电子词典|音乐播放器|手电筒|倒计时