【掌控板】6、抓取国际标准时间及显示、定时器

该代码示例展示了如何在微控制器上连接WiFi获取网络时间,并利用库绘制圆盘时钟。同时,通过定时器设置时间间隔读取并显示音量和亮度值。程序包括了将十进制数转换为字符的函数,以及连接WiFi、读取传感器数据和更新显示的逻辑。最终,程序会在OLED屏幕上显示当前时间、音量和亮度信息。
摘要由CSDN通过智能技术生成

前言

本文主要实现如下几点

  1. 连接wifi,获取网络时间:ntptime&wifi
  2. 利用库中的clock绘制圆盘时钟及显示
  3. 使用定时器设置时间间隔触发读取音量、亮度数值

代码


import ntptime,network
from mpython import*
from machine import Timer

# 十进制数字转换为字符
def int2char (x):
  numbers = {
    0 : '0',
    1 : '1',
    2 : '2',
    3 : '3',
    4 : '4',
    5 : '5',
    6 : '6',
    7 : '7',
    8 : '8',
    9 : '9',
    10 : 'a',
    11 : 'b',
    12 : 'c',
    13 : 'd',
    14 : 'e',
    15 : 'f',
  }
  return numbers.get(x,None)


# 十进制int转十进制字符串
def int_2_dec( value , key_num):
    a=value%key_num
    result=''
    #print("value",value)
    if (a == 0) & (value == 0 ):
      result = '0'
      return result
    #print("result",result)
    #print("a!=0",a!=0)
    #print("value > 0",value > 0)
    while True  :
        if a == 0:
          if value <= 0:
            break
        #print("enter")
        #print("a",a)
        temp=int2char(a)
        #temp=hex(a).replace('0x','')
        result=temp+result
        #print("result",result)
        value=(value-a)//key_num
        #print("value",value)
        a=value%key_num
        #print("a",a)
    return result

# 连接wifi
mywifi=wifi()
mywifi.connectWiFi("youkai","19971226")

try:
    # 获取UTC国际标准时间
    ntptime.settime()
    # ntptime.settime(timezone=8, server = 'ntp.ntsc.ac.cn')
    # timezone为时区时间差,默认为东八区补偿8h,指定授时服务器,server为字符串类型,默认
except OSError :
    oled.DispChar("ntp链接超时,请重启!",0,20)
    oled.show()
else:
    # 绘制时钟,设置圆心坐标(64,32),半径30
    clock=Clock(oled,64,32,30)

    # 定义刷新函数,获取时间并显示
    def Refresh(_):
        # 读取并显示音量
        sound_value_int=sound.read()
        sound_value_char=int_2_dec(sound_value_int,10)
        print('sound',sound_value_char)
        oled.DispChar('sound', 0, 0, 1)
        oled.DispChar(sound_value_char, 0, 16, 1)

        # 读取并显示光亮
        light_value_int=light.read()
        light_value_char=int_2_dec(light_value_int,10)
        print('light',light_value_char)
        oled.DispChar('light', 97, 0, 1)
        oled.DispChar(light_value_char, 97, 16, 1)

        # 刷新时间
        clock.settime()
        clock.drawClock()
        oled.show()
        clock.clear()
        oled.fill(0)

    # 定时器1
    tim1 = Timer(1)

    # 初始化定时器1,设置时间1s,Timer.PERIODIC周期性,回调函数Refresh
    tim1.init(period=100, mode=Timer.PERIODIC, callback=Refresh)

结果

在这里插入图片描述

参考文章

时钟
光线
时钟2

存疑

对文件右击选择"停止运行",再cmd窗口还是继续跑了8次才停止。
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值