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

【摘要】随着当今社会快节奏生活的发展,当代大学生越来忽视时间管理的重要性,在原本计划只看几个视频只玩几个游戏的碎片化娱乐中耗费了大量的时光,对于自己原本的学习生活产生了巨大的影响。为更加有效的反映时间的流逝,特设计该电子沙漏电路利用控制灯珠的亮灭来模拟沙漏中沙子的掉落。在非整点时电子沙漏电路会模拟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…

数据增强让模型更健壮

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

线性分类器--数据处理

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

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

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

美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…

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

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

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

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

论文阅读:“Model-based teeth reconstruction”

文章目录 AbstractIntroductionTeeth Prior ModelData PreparationParametric Teeth Model Teeth FittingTeeth Boundary Extraction Reference Abstract 近年来,基于图像的人脸重建方法日趋成熟。这些方法可以捕捉整个面部或面部特定区域(如头发、眼睛…

CAN总线星型连接器及特点

CAN总线星型连接特点 CAN总线是一种广泛应用于汽车、工业自动化、家庭等领域的现场总线技术。它具有高速度、高可靠性、灵活性等特点,被广泛应用于汽车电子、工业自动化、家庭自动化等领域。在CAN总线的实际应用中,其连接方式可以是星型或菊花型。本文将…

Leetcode—160.相交链表【简单】

2023每日刷题(四十一) Leetcode—160.相交链表 算法思想 两个链表的节点之和是相等的 如果两个链表相交,那么相交点之后的长度是相同的 我们需要做的事情是,让两个链表从同距离末尾同等距离的位置开始遍历。这个位置只能是较短…

Linux系统编程:文件系统总结

目录和文件 获取文件属性 获取文件属性有如下的系统调用,下面逐个来分析。 stat:通过文件路径获取属性,面对符号链接文件时获取的是所指向的目标文件的属性 从上图中可以看到stat函数接收一个文件的路径字符串(你要获取哪个文件的属性&a…

第二十三章 解析PR曲线、ROC曲线、AUC、AP(工具)

混淆矩阵Confusion Matrix 混淆矩阵定义 混淆矩阵是机器学习中总结分类模型预测结果的情形分析表,以矩阵形式将数据集中的记录按照真实的类别与分类模型预测的类别判断两个标准进行汇总。其中矩阵的行表示真实值,矩阵的列表示预测值,下面我…

file_get_contents() 函数详解与使用

概述 在PHP中,file_get_contents() 函数是一个强大的工具,它既可以用于读取本地文件的内容,也可以用于发起 HTTP 请求获取远程资源。本文将详细介绍 file_get_contents() 函数的两种主要用途,并探讨如何充分利用这个函数。 1. 文…

【高效开发工具系列】MapStruct入门使用

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

数据结构与算法编程题30

层次遍历二叉树(队列&#xff1a;先进先出) #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std;typedef char ElemType; #define ERROR 0 #define OK 1 #define Maxsize 100 #define STR_SIZE 1024typedef struct BiTNode {ElemType data;BiTNode…