2018-12-22 17:08:21 [显示全部楼层]
5152浏览
查看: 5152|回复: 5

[入门教程] 【掌控】新技能: clock--模拟时钟

[复制链接]
本帖最后由 rzyzzxw 于 2018-12-27 08:54 编辑

冬至,学习正好。

【掌控】新技能: clock--模拟时钟图1


继续GET掌控新技能:Clock类 模拟钟表显示功能

【小提示】
Clock类需要最新版mpython V 1.0掌控基础库支持。


【小资料】
UI.Clock(x, y, radius)

构建Clock对象。

  • x 、y -中心点坐标
  • radius -钟表半径


UI.settime()

获取本地时间并设置模拟钟表时间

UI.drawClock()

绘制钟表

UI.clear()

清除钟表


【模拟钟表】
【掌控】新技能: clock--模拟时钟图2


[mw_shl_code=python,true]from mpython import *
from machine iamport Timer

clock=UI.Clock(64,32,30)

def Refresh(_):
    clock.settime()
    clock.drawClock()
    oled.show()
    clock.clear()

tim1 = Timer(1)

tim1.init(period=1000, mode=Timer.PERIODIC, callback=Refresh)[/mw_shl_code]
当前这个钟表还不准哈,默认从0点0分开始工作,不要紧哈,先有个钟表的样子,后面在网络部分再校准它。

from mpython import *       导入掌控基础库


from machine import Timer    导入micropython硬件定时器:处理周期和事件的时间


clock=UI.Clock(64,32,30)  定义变量,钟表的中心点和半径


def Refresh(_):                   #定义定时器回调函数
        clock.settime()          获取本地时间并设置模拟钟表时间
        clock.drawClock()     绘制钟表
        oled.show()              显示
        clock.clear()              清除钟表



tim1 = Timer(1)            #创建定时器1      

tim1.init(period=1000, mode=Timer.PERIODIC, callback=lambda _:Refresh()) #配置定时器,模式为循环执行,循环周期为1秒
最后一句最长也最要学习。


Timer.init(*, mode=Timer.PERIODIC, period=-1, callback=None)
初始化计时器
period=1000,周期1000ms

mode 可以是以下之一:

    Timer.ONE_SHOT - 计时器运行一次,直到配置完毕通道的期限到期。

    Timer.PERIODIC - 定时器以通道的配置频率定期运行。


本例中定时器以通道的配置频率1000ms定期运行
callback=Refresh   CALLBACK,回调函数就是一个通过函数指针调用的函数。


总结一下,这一句就是说计时器以配置频率1000ms定期运行回调上面的时钟显示函数。


【小资料】
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。


够烧脑了,吃个饺子补补去。

【掌控】新技能: clock--模拟时钟图3

【12.24更新】

【关于报错261】
【以下内容全部来自工程师】

我把程序稍微改了点,不能实时运行的原因,它这次报的错误比较特别,是OSError 261,我查了一下micropython好像同时运行两个时钟会冲突。

报错就是261

运行并没有抵消main.py,如果mian.py里面存在时钟,再运行就会出错,但是刷入,好像是可以的

要硬重启(按下reset)

我这里的情况是:出现OSError 261就要硬重启

如果单纯使用刷入功能,就不需要硬重启

运行实际是驻留在内存里面的,因此连续运行两次时钟程序会出错

【12.25更新】
mpython2基础库已经更新到1.0.1,可以直接从软件刷最新库了。

掌控1.0.1固件已经推送,重新打开mPython2软件即可收到
1.0.1固件默认内置了mpython.py(基础库)、tinywebio.py(与app inventor通讯)、labplus_handpy_online.py(掌控在线协议,无需设为默认,用Labplus软件可以直接激活)
注意:板上的代码要备份一下再更新固件,不然会丢掉

44107900  初级技师

发表于 2018-12-22 23:52:06

第三行 ‘time' imported but unused
无法运行
回复

使用道具 举报

rzyzzxw  版主
 楼主|

发表于 2018-12-23 09:36:43

44107900 发表于 2018-12-22 23:52
第三行 ‘time' imported but unused
无法运行

可以的,后面你升级掌控到新版固件。
回复

使用道具 举报

44107900  初级技师

发表于 2018-12-23 10:31:26

rzyzzxw 发表于 2018-12-23 09:36
可以的,后面你升级掌控到新版固件。

谢谢!刷新固件后,运行时弹出“UI”的错误。
回复

使用道具 举报

rzyzzxw  版主
 楼主|

发表于 2018-12-23 13:45:54

本帖最后由 rzyzzxw 于 2018-12-23 14:26 编辑
44107900 发表于 2018-12-23 10:31
谢谢!刷新固件后,运行时弹出“UI”的错误。

mpython2 0.2.5版本还不支持clock类的。等后面升级吧。
回复

使用道具 举报

rzyzzxw  版主
 楼主|

发表于 2018-12-24 09:12:23

本帖最后由 rzyzzxw 于 2018-12-24 16:36 编辑

帖子有更新,加入了运行提示及解决办法。加入了新库文件。


回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail