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

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 986|回复: 1

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

[复制链接]
发表于 2022-8-13 18:11 | 显示全部楼层 |阅读模式
本帖最后由 东风早已破晓 于 2022-8-14 13:28 编辑

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

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

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

外观
微信图片_20220814081951.jpg
微信图片_20220814082008.jpg
微信图片_20220814125520.jpg
微信图片_20220814125526.jpg
基础功能界面
微信图片_20220814125546.jpg
微信图片_20220814125557.jpg
扩展功能界面(还没有做任何功能QAQ)
微信图片_20220814125604.jpg
音乐选择界面
241f7abac53a9d34809d0f0e0ff86e1.jpg
查单词 界面
31ed3eb5f23cb3dca8125fff44539f4.jpg

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

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

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

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


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

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

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

       4、词语搜索程序
           一个词语分俩行,第一行单词,第二行音标和词性、词语释义(音标词性中一般含有四个空格,于是我就用第五个空格作为分界线分开词性和词语释义)
            捕获.PNG     
             我的思路是用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不能并行处理的原因?
   所以我就只能做到手动输入文件名和循环播放音乐的功能
            缺点:麻烦,麻烦,还是麻烦
1660384923522.jpg 1660385031694.jpg
(本来想做音乐播放控件,亏我还画了个界面








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

            FWNLSBWWUSX9I7DJ_@PNU]K.jpg

           感谢各位的阅读











您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 06:35 , Processed in 0.108030 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表