多功能音乐沙漏的设计与实现

【摘要】随着当今社会快节奏生活的发展,当代大学生越来忽视时间管理的重要性,在原本计划只看几个视频只玩几个游戏的碎片化娱乐中耗费了大量的时光,对于自己原本的学习生活产生了巨大的影响。为更加有效的反映时间的流逝,特设计该电子沙漏电路利用控制灯珠的亮灭来模拟沙漏中沙子的掉落。在非整点时电子沙漏电路会模拟30秒正常的沙漏掉落,以提醒人们时间的可贵,要珍惜碎片化的时间,在整点时刻进行短暂的时间回溯,下部沙粒重回上部沙漏后再次掉落,同时播放歌曲并且灯珠颜色变化,此过程同为30秒,以此提醒人们时间一去不回,人们应当注重时间管理好好利用时间。

关  键  词  沙漏模拟; 音乐播发; 碎片化时间

Abstract With the development of fast-paced life in today's society, contemporary college students increasingly ignore the importance of time management. They spend a lot of time in the fragmented entertainment that originally planned to watch only a few videos and play only a few games, which has a huge impact on their original study and life. To more effectively reflect the passage of time, the electronic hourglass circuit is specially designed to simulate the fall of sand in the hourglass by controlling the light beads. The electronic hourglass circuit simulates 30 seconds of normal hourglass dropping at non-hourglass time to remind people of the value of time. To cherish fragmented time, make a short time backtrack at the whole time, lower sand grains fall back to the upper hourglass again, and play a song and change the color of the lamp beads. This process is the same as 30 seconds, to remind people that time never goes back, people should pay attention to time management and make good use of time.

Key words  Hourglass simulation;  Music Broadcast;  Fragmentation time;  

随着如今移动互联网、大数据、云计算等科学技术的日渐完善,外界的诱惑力变得越来越大,我国当代大学生们往往会沉迷于某事之中而忽略时间管理的安排[1]。在荒芜了大量时间后的碎片化学习中也是收获甚微,更对自己的个人生活产生了不可忽视的影响[2]。故根据古代沙漏中沙粒崩塌的模型[3]设计本多功能音乐沙漏进行模拟。在非整点时电子沙漏电路会模拟30秒正常的沙漏掉落,以提醒人们时间的可贵,要珍惜碎片化的时间,在整点时刻进行短暂的时间回溯,下部沙粒重回上部沙漏后再次掉落,同时播放歌曲并且灯珠颜色变化,此过程同为30秒,以此提醒人们时间一去不回,人们应当注重时间管理好好利用时间。

1  方案设计

1.1  总体方案设计

本多功能音乐沙漏采用nodemcu作为主控单片机,并通过ws2812形象的表示沙粒[4],模拟沙漏的运动过程。如图1流程图所示,在nodemcu通电之后,其可进行wifi联网实时获取当前时间,在非整点时可进行正常的沙漏掉落,在整点时会进行一个特殊的沙漏特效,同时手机blinker可与单片机进行连接,进行外部中断。

2726f89684a64f01970af6092b89574d.png

(图1.总体设计流程图)

1.2  总体电路设计

基于单片机最小系统在nodemcu开发板上的一体化[5],本多功能音乐沙漏的电路设计偏重于灯光模拟电路以及音乐播发电路两部分,其供电接口为nodemcu开发板数据接口一体,使整个系统简化扁平化。如图2所示,总体设计电路图。4dea029c65e34c07bdf3299e84b34ea0.png

(图2.总体设计电路图)

灯光模拟电路由30个ws2812小灯串联,通过统一正负极进行供电,再辅以数据线连接D5引脚,对ws2812进行编号命名,控制其开关以及颜色变化等。无源蜂鸣器电路和开发板之间有三条电路连接,正负极进行蜂鸣器供电,数据线连接D7号引脚,控制音乐的播发。

2  联网功能的实现

2.1  设计思路

本多功能音乐时钟作为物联网智能家具的衍生品,系统硬件部分使用arduino软件进行代码编写和修改[6]。手机端部分使用blinker点灯科技作为控制面板。通过MQTT进行手机端-设备端-电脑端三者之间的通信,并在手机端blinker的搭建可视化移动物联网平台[7],使用者通过图3的手机界面里的按键操作即可完成对多功能音乐沙漏的中断控制。

6960cfd09cb9465b893b0239f071c46b.png

(图3.手机blinker操作平台)

2.2  联网获时的实现

当nodemcu通电后,开发板根据写入的wifi名称和wifi密码进行反复连接,如果wifi名称、密码错误或者wifi信号较弱导致连接网络不成功,则无源蜂鸣器会进行报警。如果单片机成功连接上网络,nodemcu会以一秒为间隔实时获取当前的时间并将当前时间的时、分、秒分别记录在变量hours,minu和sece之中。

每次获得数据的同时进行一次分析,首先分析当前的minu和sece是否为0,如果minu和sece均为0,则执行整点特殊功能,如果至少有一个为0则判断现在是否有程序执行,当有程序执行则继续执行此程序,无程序执行则执行非整点常规功能。

2.3  联网中断的实现

不进行中断控制时,多功能音乐沙漏运行实时功能,但在实时读取时间的时分秒的数据同时,也在获取物联网里的手机平台消息。当在手机物联网平台上进行功能按钮操作时,手机会上传该按钮对应的按钮信息,这时的按钮信息被开发板联网获取后会与代码里也有的信息进行比对,中断现有的功能程序,执行获取信息所对应功能。

3  灯光模拟的设计与实现

3.1  设计思路

将30个ws2812小灯珠分为对称的上下两组,呈现为沙漏形状,采用流水灯思路[8],用一根数据线将其串联,再串联其正负极电源线,进行供电。

如图4所示,以沙漏上半部分的ws2812为例,对于其ws2812的编号按照电路顺序从0开始编码,30个ws2812灯珠的编号为0到29,此时便可以在代码里通过对数字编号的控制达到对对应灯珠的控制。

7150605f0b074fc9afbe1c47a5ca93d7.png

(图4.上部沙漏灯珠编号图)

每个ws2812小灯珠的内部均含有红、绿、蓝3个单色LED, 基于通过控制灯珠的编号来对应具体的灯珠,再通过代码的编写,控制具体的灯珠里小LED的亮灭,再通过0~255的数值赋值,控制其亮度大小(其中0为最暗,255为最亮)[9]依照图5的RGB三原色表,便可以得到不同颜色。

a820be2447e54117b16dd40fe78ff02f.png

(图5.RGB三原色表)

根据三原色的色彩比例[10],分析出沙漏中沙子应有的黄色以及时间回溯和警醒时需要的红色灯光的三原色亮度比例,以其中占比最高的颜色亮度设置为255,其他的两种颜色依照比例计算其亮度,最终记录三原色亮度代码,通过代码在不同的时间片刻给与不同编号的灯珠以不同的颜色,根据时间的转变即起到动态的效果。

3.2  灯光模拟电路

如图6的灯光模拟电路图,依照编号顺序将ws2812灯珠依次串联,数据线连接12号引脚,通过数据的传递来控制灯的颜色以及亮灭[11]。

79588ceb3a9140369394ccdbe387ca15.png

(图6.灯光模拟电路图)

3.3  非整点常规灯光模拟效果

以灯珠呈现黄光表示沙漏的该处充满沙粒,以灯珠不发光表示沙漏的此处无沙粒,在该程序刚运行之时位于上方倒三角的 15 个灯珠全部呈现黄光,下面的15个灯珠处以熄灭状态,以模拟沙子充满容器上方的沙漏初始状态。

随着时间的变化,模拟沙漏上部的沙粒依照重力变化一粒一粒减少,下部的沙漏随之从下到上逐渐堆积。此时的沙漏模拟效果即为上部灯珠一个个熄灭,下部灯珠一个个呈现黄光[12],直到最后上方的灯珠全部熄灭,下方的灯珠全发黄光,持续此状态三秒,后重复此过程。

3.4  整点特殊灯光模拟效果

在该功能中沙漏中的沙粒会呈现出不同的颜色状态,灯珠发光表示沙漏的该处充满沙粒,灯珠不发光则表示沙漏的此处无沙粒。初始状态的的多功能音乐沙漏上部15个灯珠不发光,下部15个灯珠呈现黄光,表示该沙漏为装满普通黄沙且已经流完的普通沙漏。

之后进行一个短暂的时间重置,下部的沙粒会以反重力的形式倒流到沙漏上部。当上部再次再次充满沙粒的时候,上部灯珠由正常的黄光变为白光,并在再次飞速掉至沙漏下部的过程中变换为其他多彩颜色,而在最终落入沙漏下部时呈现出刺眼的红色,整个过程的时间与正常的循环时间恰好相同,以表示时光一去不复返,无人可以控制时间的流逝,况且我们的人生本该是绚丽多彩,不能走到最后只剩满目沧桑,我们应该抓紧现有时光。

4  歌曲播放功能的设计与实现

4.1  设计思路

当用PWM方波驱动无源蜂鸣器时,无源蜂鸣器可视为一个小型扬声器[13],基于nodemcu内部时钟分频[14],根据不同频率的方波信号即可播放出不同频率的音调。根据音调的高低与时间变化即可实现无源蜂鸣器的歌曲播放功能。

4.2  实现过程

以南京邮电大学的校歌《信达天下》进行参考,找到其简谱图,如图7:

b8597c44bccc4e8d8647ac31a5a36e01.png

(图7.参考的乐谱图)

依照八度的音程按波长比例平均分成十二等份,每一等份称为一个半音(小二度)的原理[15],将音符NTC0定义为-1,NTC1定义为262,NTC2定义为294,NTC3定义为330,NTC4定义为350,NTC5定义为393,NTC6定义为441,NTC7定义为495,NTCL5为196,NTCL6为221,NTCL7为248,NTCH1为525,NTCH2为589,按照乐谱写入对应的音符数组。

已知一拍的时长大约为400—500ms[16],将一拍的时长以400ms近似,则当以四分音符为节拍时,四分音符的时长就为400ms,八分音符的时长就为200ms,十六分音符的时长就为100ms,以此基础将乐谱里的节拍记录在数组里。

程序运转时单片机将音符与节拍逐一对应,驱动无源蜂鸣器演奏对应音符持续指定节拍时间,然后再执行下一音符与节拍,从而实现动态的歌曲播放。

5  结 束 语

通过常规灯光模拟、特殊灯光模拟、音乐播发三大核心的功能的实现,从而可以在联网中断控制和非中断实时循环等情况里进行多种有机集合。基于多功能音乐沙漏的设计与实现,可以实时观察到时间的流逝,感受到时间的无情,从而在音乐的鼓舞之下抓紧碎片化的时间,积极投身于学习生活之中去。

参  考  文  献

  1. 陈必忠,孙晓军.中国内地大学生时间管理倾向的时代变迁:1999~2020[J].心理科学进展,2022,30(09):1968-1988.
  2. 周婧怡,何济玲.大学生碎片化学习注意力失焦环境下元认知能力水平现状调查[J].中国教育技术装备,2021(08):19-22+27.
  3. 李霖渊,胡林,许锋,张忠政,曲东升,张兴刚,孔维姝.沙漏计时原理二维数值模拟[J].大学物理,2008(09):47-50.DOI:10.16854/j.cnki.1000-0712.2008.09.010.
  4. 李耀明,周洪艳,郜慧波,苑刚,徐磊.基于Arduino多功能手杖LED灯设计与实现[J].南方农机,2018,49(09):8+28.
  5. 孙福玉.电子沙漏的设计与实现[J].实验室科学,2018,21(03):1-2+6.
  6. 叶险峰,李锡华,施红军.基于Arduino平台的电子电路设计实验教学实践[J].实验科学与技术,2020,18(02):68-72.
  7. 胡文睿,谈潘攀.基于物联网的智慧浴室系统的设计[J].电脑知识与技术,2021,17(26):127-130.DOI:10.14004/j.ckt.2021.2619.
  8. 孙浩文.基于Arduino的花式流水灯的设计与实现[J].电子技术与软件工程,2019(24):71-72.
  9. 辛亚辉,陈景乾.Arduino色光三原色实验探究——以人教版八年级物理教材为例[J].发明与创新(初中生),2021(10):38-39.
  10. 钱惠国.红绿蓝三色LED调色特性的实验研究[J].实验科学与技术,2015,13(01):27-30.
  11. 史添添.基于WiFi-AP模式的流水灯控制系统的设计与实现[J].信息与电脑(理论版),2021,33(02):101-103.
  12. 聂秀珍.论电子沙漏的原理与电路设计[J].信息通信,2017(11):68-70.
  13. 魏永辉.嵌入式STM32下无源蜂鸣器发声[J].科技展望,2016,26(24):163.
  14. 苏神保,刘丹.基于NodeMCU的物联网教学平台设计与实现[J].江西通信科技,2021(04):22-24.DOI:10.16714/j.cnki.36-1115/tn.2021.04.004.
  15. 陈可圆.巴赫《十二平均律BWV861》的演奏诠释[J].北方音乐,2020(13):37-38.
  16. 郭林.中国古代音乐“拍”的研究——80年代以来中国古代音乐“拍”研究[J].人民音乐,2010(04):69-73.

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/174815.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧公厕客流统计,是通过什么原理实现的?

在这个信息爆炸的时代,科技已经深刻地渗透到我们生活的方方面面,就连那些看似与现代社会脱节的公厕,也迎来了智慧时代的冲击。智慧公厕客流统计系统的崭新面貌,不仅实现了对卫生间使用情况的精准监测,更为城市管理者提…

第十七章 解读PyTorch断点训练(工具)

主要有以下几方面的内容: 对于多步长训练需要保存lr_schedule初始化随机数种子保存每一代最好的结果 简单详细介绍 最近在尝试用CIFAR10训练分类问题的时候,由于数据集体量比较大,训练的过程中时间比较长,有时候想给停下来&…

Gitee上传代码教程

1. 本地安装git 官网下载太慢,我们也可以使用淘宝镜像下载:CNPM Binaries Mirror 安装成功以后电脑会有Git Bush标识,空白处右键也可查看。 2. 注册gitee账号(略) 3. 创建远程仓库 4. 上传代码 4.1 在项目文件目录…

go当中的channel 无缓冲channel和缓冲channel的适用场景、结合select的使用

Channel Go channel就像Go并发模型中的“胶水”,它将诸多并发执行单元连接起来,或者正是因为有channel的存在,Go并发模型才能迸发出强大的表达能力。 无缓冲channel 无缓冲channel兼具通信和同步特性,在并发程序中应用颇为广泛。…

坚鹏:贵州银行西南财经大学零售业务数字化转型与场景营销策略

中国银保监会2022年1月正式发布了中国银保监会发布《关于银行业保险业数字化转型的指导意见》,这标准着中国银行业从局部的数字化转型向全面的数字化转型转变,进一步加速了银行数字化转型高潮的到来。 《关于银行业保险业数字化转型的指导意见》提出明确…

【教学类-06-12】20231126 (二)三位数 如何让加减乘除题目从小到大排序(以0-110之间加法为例,做正序排列用)

结果展示 背景需求: 二位数:去0 三位数(需要排除很多0) 解决思路 一、把数字改成三位数 二、对数组内的题目,8种可能性进行去“0”处理 1、十位数(去百位数0)十位数(去百位数0&am…

淘宝商品详情数据API接口php java python

在当今竞争激烈的电子商务环境中,如何提高用户体验、提升运营效率并保障交易安全性是每个电商平台都需要关注的问题。淘宝作为中国最大的综合性电商平台,一直在不断创新和完善自身的服务体系。其中,淘宝商品详情API接口在跨境系统中发挥着越来…

【C/PTA】指针专项练习(一)

本文结合PTA专项练习带领读者掌握指针,刷题为主注释为辅,在代码中理解思路,其它不做过多叙述。 目录 6-1 删除字符串中数字字符6-2 找最大值及其下标6-3 求两数平方根之和6-4 求一组数中的最大值、最小值和平均值6-5 两个4位正整数的后两位互…

HuggingFace学习笔记--Tokenizer的使用

1--AutoTokenizer的使用 官方文档 AutoTokenizer() 常用于分词,其可调用现成的模型来对输入句子进行分词。 1-1--简单Demo 测试代码: # 分词器测试Demo from transformers import AutoTokenizerif __name__ "__main__":checkpoint "…

数据增强让模型更健壮

在做一些图像分类训练任务时,我们经常会遇到一个很尴尬的情况,那就是: 明明训练数据集中有很多可爱猫咪的照片,但是当我们给训练好的模型输入一张戴着头盔的猫咪进行测试时,模型就不认识了,或者说识别精度很低。 很明显,模型的泛化能力太差,难道戴着头盔的猫咪就不是猫…

线性分类器--数据处理

数据集划分 通常按照 70%,20% ,10% 来分数据集 数据处理 斯坦福的线性分类器体验 http://vision.stanford.edu/teaching/cs231n-demos/linear-classify/

找工作面试技巧

问题描述:找工作时,不知道如何回答问题怎么办。 问题解决:可以尝试使用STAT原则来回答问题。具体如下。 "STAR" 原则是一种常用于回答面试问题的方法,特别是在描述个人经验、解决问题或展示技能和能力时。"STAR&q…

【解决视觉引导多个位置需要标定多个位置的问题】

** 以下只针对2D定位,就是只有X、Y、Rz三个自由度的情况。** 假设一种情况,当视觉给机器人做引导任务时,零件有多个,分布在料框里,视觉需要走多个位置去拍,那么只需要对第一个位置确定拍照位,确…

QContextMenuEvent 是 Qt 框架中的一个类,用于表示上下文菜单事件

QContextMenuEvent 是 Qt 框架中的一个类,用于表示上下文菜单事件。 上下文菜单事件(Context Menu Event)在用户右击部件时触发,通常用于显示上下文菜单。这些菜单可以包含与所选部件相关的操作和选项。 QContextMenuEvent 类提…

C语言重点编程题——1-10

目录 1.编一个程序,输入10个整数,统计并输出其中正数、负数和零的个数。 2.编程序,按下列公式计算e的值(精度为1e-6)e=1+1/1!+1/2!+1/3!.......1/n! 3.编程,输入n个整数,求这n个数的偶数平均值,并输出。 4.若一个3位整数的各位数字的立方和等于这个整数,则称之为“水…

美SEC与贝莱德,对比特币现货ETF申购方式产生分歧!

比特币现货ETF的通过时间是市场投资者密切关注的议题。虽然SEC最近推迟了Hashdex、富兰克林邓普顿(Franklin Templeton)和GlobalX申请的决议时间,但彭博ETF分析师James Seyffart对明年一月通过的机率持乐观态度,认为其通过的机会能…

Java - Stream Filter 多条件筛选过滤

Java Stream流中Filter用于通过设置的条件过滤出元素 ,示例如下: List strings Arrays.asList(“abc”, “”, “bc”, “efg”, “abcd”,"", “jkl”);List filtered strings.stream().filter(string -> !string.isEmpty()).collect(C…

Java编译过程中的JVM

流程 源代码编写: 首先,开发者使用Java编程语言编写源代码。这些源代码通常保存在扩展名为.java的文件中。 编译源代码: 使用Java编译器(例如javac),这些.java文件被编译成Java字节码。字节码是一种中间形…

eclipse - jee 建立项目后没有 web.xml

eclipse -- jee 建立项目后没有 web.xml 处理它的方法是,点 File - New - Dynamic Web Project , 此时起一个项目名如M4 然后next 然后next 出现如此所示:

基于springboot实现农机电招平台系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现农机电招平台系统演示 摘要 随着农机电招行业的不断发展,农机电招在现实生活中的使用和普及,农机电招行业成为近年内出现的一个新行业,并且能够成为大群众广为认可和接受的行为和选择。设计农机电招平台的目的就是借助计算…