掌控板OLED屏模拟指针式时钟转运原理剖析

luyi
帖子创建于2020年12月16日 基础使用 864 次浏览 2 个赞

钟表一直以来都是国人钟爱的商品之一。或许女朋友就送了你一只怀表(/微笑)。我国古代就有日晷计时。随着信息社会的发展,数码管式钟表产生了。但是,非常多的人还是喜欢指针式钟表。

本文使用mPython软件仿真功能,使用一根指针探究掌控板OLED屏模拟指针式时钟转运原理。

一、动图效果展示


二、算法实现原理

指针在表盘里面的转动是通过不断地擦除就指针,绘制新指针表示出来的。关键点在于指针一端永远固定在圆心(64,32)位置,而另一端则在圆的路径上顺时针移动。所以,重点又转移到寻找圆的路径中x和y的关系。这里,我们根据x的范围求y的值。

下面我们先来学习下高中数学几何问题0.0.

(前方高中数学知识高能预警)

如下图所示,在128*64大小的直角坐标系中,圆的半径为30,圆点坐标是(64,32)。


注意:

1.上式求平方根后会产生一正一负两个根,而编程中sqr()函数只保留正根。因此,我们需要分类讨论。

2. 上式最终结果为浮点型数值(小数),而掌控板OLED屏显示坐标均要求是正整数。因此,需要对结果进行取整。

所以,圆的路径y坐标最终结果为

注意:

1.上式求平方根后会产生一正一负两个根,而编程中sqr()函数只保留正根。因此,我们需要分类讨论。

2. 上式最终结果为浮点型数值(小数),而掌控板OLED屏显示坐标均要求是正整数。因此,需要对结果进行取整。


三、代码模拟

已知圆的路径坐标x的范围是[34,94],而每个x都对应两个y。所以需要根据指针的运动情况进行分类讨论。


1. 指针顺时针转动,当指针在圆点的上方时,x从左往右增加,y的值先从32逐渐变小到2,再逐渐从2变大到32。y值的范围是[2,32]。mPython代码如下图所示:


2. 指针顺时针转动,当指针在圆点的下方时,x从右往左减少,y的值先从32逐渐变大到62,再逐渐从62变小到32。y值的范围是[32,62]。mPython代码如下图所示:


最后,再重复执行上述代码,即可完成指针式钟表的模拟。


当然了,以上程序存在2大问题,

1. 指针转动的速度快慢不一,如何解决呢?

2. 指针一端固定在圆心位置,另一端直接在圆的路径上,应该如何解决?

这两个问题,你发现了吗?

好了,小伙伴们,知道了指针转动的原理,你能在掌控板上写出时钟代码吗?


文件名:指针式时钟转运原理.zip

2 条评论

小齿轮 汝州一中朱现伟

2020年12月18日

卢老师好作品

溜冰

2021年10月05日

很棒