首页 > 范文大全 > 正文

设计一个定时闹钟

开篇:润墨网以专业的文秘视角,为您筛选了一篇设计一个定时闹钟范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

闹钟在我们日常生活中十分常见,几乎所有的手机都自带了闹钟功能。不知道大家是否记得指针式闹钟(如图1)。现在的闹钟,纯机械的几乎绝版了,就连指针式的电子闹钟也不多见了。利用开源硬件,做一个复古的指针式闹钟,让它能定时闹铃,应该是挺有趣的。

器材和原理

闹钟至少需要指针和铃声。因此,舵机和蜂鸣器是必要的电子模块。舵机可以做指针,每分钟转动一定的角度。当舵机转到预定的角度(预定时间)时,停止转动并让蜂鸣器响起,这就是定时闹钟的核心功能了。至于控制板,当然选择Arduino了。

舵机的工作过程是把所接收到的电信号转换为电动机轴上的角位移或角速度输出,可以精确控制其旋转的角度。为了辨别舵机的转动,我们需要做一个指针固定在舵机上。闹钟的原型如图2所示。

建模和编程

我们先确定做一个1小时的闹钟,指的是最大时间长度(最大量程)是1小时的闹钟。然后找一张纸剪成圆形,用一个画了刻度的半圆(180度)来表示闹钟的指针。简单计算下,舵机每分钟转动的单位角度是3度,即180/60=3(度)。如果要定时15分钟,当舵机转过45度时就要“闹铃”了。

你能否归纳出定时n分钟时舵机转过的角度?答案就是3×n度。为了让舵机顺时针转动,舵机的初始角度要设定为180度,即从180度到0度旋转。那么,舵机的角度随时间的增加而减小,因此n分钟的定时,舵机停止转动的角度就是(180-3n)度,如表1所示。

弄明白原理,就可以开始编程了。我们采用的编程工具是Mixly(米思齐)。编程工具Mixly可以通过扫描文尾的二维码下载。以1小时闹钟定时15分钟为例,具体代码见下页图3。

那么,如何制作一个最大量程为15分钟或者3小时之类的闹钟?在代码中预设的最小单位角度(3度)不变的情况下,只用修改延时即可。例如,最大里程是3小时,可知每分钟转1度(180度/180=1度),转过单位角度(3度)需要180秒,所以延时时间为180000毫秒。现在,你能否归纳出最大量程为n分钟的闹钟需要的延时时间呢?整理出一个表格去看就会更加清晰,如表2所示。

作品测试

既然是闹钟,其定时的长度肯定要能够允许用户自行定义。要实现这样的功能,需要增加一个按钮和旋钮:当按下按钮时,调整舵机的初始角度,使舵机回到原点。旋钮的作用即是记录需要的时间,为了增加效果,旋钮上也需要安装一个指针。

本例子将信号线连接到9号数字针脚。将蜂鸣器的红线与控制板的正极相连,黑线插在2号数字针脚上。

旋钮的输出值是0~1024,可是舵机旋转的角度是0~180度,如何实现两者的关联呢?Arduino中提供了map函数(Mixly中翻译为“映射”),实现前者与后者的对应关系,并返回映射后的数值。其实,只要数学还过得去,就能明白这个关系式其实很简单:舵机角度=(旋钮值÷1024)×180。调试时,最好利用串口将数据读出来观察。

完整的代码如图4所示。为了方便测试,代码中将延时时间设定为300毫秒。扫描二维码可以看到作品的演示视频。

拓展提升

定时闹钟的前期工作基本完成,最后可以发挥自己的想象,加上装饰,画上刻度。当当当……炫酷的定时闹钟就这样制作完成了。根据自己的需要动手制作不同里程的闹钟吧,只要去做了,你一定会惊讶于自己的创意的。我们设计的作品如图5所示。

最后,要出个题目考考大家:按照上面的思路,“延时”所需要的时间越长,这个闹钟的误差值就会越大,如何提高精度,将误差减小呢?要解决这个问题,还需要继续加强编程能力。

如果对相关内容感兴趣,请关注主持人博客。