实战microPython(二)时钟和日历的使用

5 篇文章 0 订阅
2 篇文章 0 订阅

实战microPython(2)时钟和日历的使用

David Zou 创客DIY乐园

 

    对于一名创客,自制一个个性化的时钟或闹钟啥的,应该是比较常见的入门级任务了。通常我们制作时钟或闹钟的时候,都需要借助专门的时钟芯片,例如DS1314什么的。原因是专用时钟芯片提供比较完善的计时和日历系统,芯片的功耗非常低,使用纽扣电池就能保证时钟芯片在系统断电的情况下不间断的继续计时数月甚至一年。现在,PyBoard的控制器芯片内部已经包含有这样的时钟设备,不用再外加了,使用也超级简单的。

  同之前一样,时钟设备已经被封装(定义)在pyb库中了,它被称为RTC(real time clock)。我们只需要在使用前创建RTC实体就可以了:

import pyb

 

rtc = pyb.RTC();#创建RTC实体。

rtc.datetime((2018, 7, 14, 6, 23, 18, 0, 0));#用当前时间设置这个RTC

#此时RTC已经开始按照上面的初始时间开始计时,你可以等待若干秒后执行如下语句

 

print(rtc.datetime());

(2018, 7, 14, 6, 23, 18, 32, 221)#此处为打印结果

 

   我们设置了初始时间2018-7-14  星期6   23 :18:00:00,几秒钟后,我们读取时间值并打印出来,变为了2018-7-14  星期6   23 :18:32:221。

  看到了时间在无情的流逝了吧?在这里,创建RTC时是不需要任何参数的,直接pyb.RTC()就行了,而最重要也是最常用的函数是datetime(),当datetime()函数带有一个元组参数(可到Python数据类型去重温什么是元组类型)时,就是设置RTC的时间。如果没有任何参数时,函数将返回当前RTC的时间,也是以元组类型返回。

  这里的时间都是以元组类型传递的,这个元组有8个元素,其顺序为:

(年,月,日,星期,时,分,秒,子秒)

这里,年月日时分秒都不用解释了,参考上面例程都能明白,星期是用1到7表示周一到周日,子秒(subseconds)是255到0的倒计数,每当减到0时,增加1秒,子秒重新从255开始递减,正常设置时间时,将其设置为0就行了。

 

以上就是最常用的函数了,除此之外,还有两个函数,其中校准函数calibration(cal)用于校准时钟,如果发现RTC的时钟偏快或偏慢,可使用此函数微调一下。其参数cal的值是-511到+512之间的整数。

  最后,wakeup(timeout, callback=None)和info()不太常用,就不解释了,大家可以参看官方文档:http://docs.micropython.org/en/latest/pyboard/library/pyb.RTC.html

  那么,在我们得到了一个可以自己计时的时钟后,该如何使用它制作出真正的时钟呢?问的好,首先我们要有一个能显示时钟内容的显示设备,这个设备可以是7段数码管,也可以是液晶屏等,后面我们会逐渐接触到。而今天,我们只能用打印的方式显示时间。将RTC时间值打印出来,按照不同的应用,对时间的精度要求也不一样,如果是正常的生活计时,基本都只需要精确到分钟,例如我们和别人约定时间基本上都是约定几点几分很少精确到秒,但对于特殊应用,比如赛跑,微波炉加热等需要秒表计时,就需要精确到秒了。因此,我们没有必要时时刻刻都去读取RTC的时间值并显示出来,这样是很浪费控制器的资源的,我们只需要每秒读取一次即可。其余时间,控制器可以去干别的事情,比如检测按键输入等。

这里, 我们将上面的例程修改一下,变成不断显示时间的状态,既然是不断的显示时间,显然又要使用循环了:

import pyb

 

rtc = pyb.RTC();

rtc.datetime((2018, 7, 14, 6, 23, 18, 0, 0));#用当前时间设置这个RTC

 

while True:

  print(rtc.datetime());

  pyb.delay(1000);#延时1秒

 

你将看到,每秒(刷新)显示一次新的时间值。

 

好了,今天就讲到这里。我相信大家已经打算开始制作自己的小闹钟了。

 

搜索并关注#公#众#号: MakerDIY-Park,获取更多资料。

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值