• 已删除用户
Administrator
发布于 2022-08-20 / 8 阅读
0

QuecPython学习-闪烁的LED

做个DEMO,让LED闪起来 ~~~

知识点

utime

utime 模块用于获取当前时间和日期、测量时间间隔和延迟。

格式化时间戳

utime.localtime([secs])

该函数用来将一个以秒表示的时间转换为一个元组,元组包含了了年、月、日、时、分、秒、星期、一年中第几天;如果没有给定参数sec,则使用RTC时间。返回值形式如下:
(year, month, mday, hour, minute, second, weekday, yearday)

  • year :年份,int型

  • month :月份,1~12,int型

  • mday :日,当月多少号,1~31,int型

  • hour :小时,0~23,int型

  • minute :分钟,0~59,int型

  • second :秒,0~59,int型

  • weekday :星期,周一到周日是0~6,int型

  • yearday :一年中的第多少天,int型

示例:

>>> import utime
>>> utime.localtime()
(2020, 9, 29, 8, 54, 42, 1, 273)
>>> utime.localtime(646898736)
(2020, 7, 1, 6, 5, 36, 2, 183)

反向格式化时间戳

utime.mktime(date)

该函数作用与locatime()相反,它将一个存放在元组中的时间转换为以秒计的时间戳。

示例:

>>> import utime
>>> date = (2020, 9, 29, 8, 54, 42, 1, 273)
>>> utime.mktime(date)
1601340882

休眠给定秒数的时间

utime.sleep(seconds)

休眠给定秒数的时间。
注意:sleep()函数的调用会导致程序休眠阻塞。

休眠给定毫秒数的时间

utime.sleep_ms(ms)

休眠给定毫秒数的时间。
注意:sleep_ms()函数的调用会导致程序休眠阻塞。

休眠给定微秒的时间

utime.sleep_us(us)

休眠给定微秒的时间。
注意:sleep_us()函数的调用会导致程序休眠阻塞。

返回自纪元以来的秒数

utime.time()
返回自纪元以来的秒数(以整数形式)。如果未设置RTC,则此函数返回自特定于端口的参考时间点以来的秒数(对于不具有电池后备RTC的嵌入式板,通常是由于加电或复位)。如果要开发可移植的MicroPython应用程序,则不应依赖此功能提供高于秒的精度。如果需要更高的精度,请使用 ticks_ms()和ticks_us()函数,如果需要日历时间,则 localtime()不带参数会更好。

获取时区

utime.getTimeZone()

获取当前时区,单位小时,范围[-12, 12],负值表示西时区,正值表示东时区,0表示零时区。

设置时区

utime.setTimeZone(offset)

设置时区,单位小时,范围[-12, 12],负值表示西时区,正值表示东时区,0表示零时区。设置时区后,本地时间会随之变化为对应时区的时间。

计算时间间隔

  • 返回不断递增的毫秒计数器 —— utime.ticks_ms()

  • 返回不断递增的微秒计数器 —— utime.ticks_us()

  • 返回不断递增的高精度CPU 时钟计数器 —— utime.ticks_cpu()

以上计数值本身无特定意义,只适合用在 ticks_diff()函数中,计算两次调用 ticks_ms()ticks_us()ticks_cpu()之间的时间:

utime.ticks_diff(ticks1, ticks2)

计算两次调用 ticks_ms()ticks_us(),或 ticks_cpu()之间的时间。因为这些函数的计数值可能会回绕,所以不能直接相减,需要使用 ticks_diff() 函数。“旧” 时间需要在 “新” 时间之前,否则结果无法确定。这个函数不要用在计算很长的时间 (因为 ticks_*() 函数会回绕,通常周期不是很长)。通常用法是在带超时的轮询事件中调用。

示例:

import utime
start = utime.ticks_us()
while pin.value() == 0:
    if utime.ticks_diff(time.ticks_us(), start) > 500:
        raise TimeoutError

Pin

引脚是指从集成电路(芯片)内部电路引出与外围电路的接线,引脚构成了这块芯片的接口。

GPIO

GPIO:(英语:General-purpose input/output),通用型之输入输出的简称。

GPIO可以输出高电平、低电平两种状态,设置为1即高电平,0即为低电平。
GPIO输出状态

GPIO可以读取外部电平状态,读到高电平返回1,读到低电平返回0。
GPIO读取状态

引脚与GPIO对照表

引脚名

QuecPython对应的GPIO

引脚号

CAM_MCLK

GPIO1

10

CAM_I2C_SCL

GPIO2

11

CAM_I2C_SDA

GPIO3

12

CAM_SPI_CLK

GPIO4

13

CAM_SPI_DATA0

GPIO5

14

CAM_SPI_DATA1

GPIO6

15

CAM_PWDN

GPIO7

16

MAIN_DTR

GPIO8

39

MAIN_RI

GPIO9

40

MAIN_DCD

GPIO10

48

PCM_SYNC

GPIO11

58

PCM_DIN

GPIO12

59

PCM_DOUT

GPIO13

60

PCM_CLK

GPIO14

61

创建对象

gpio = Pin(GPIOn, direction, pullMode, level)
  • GPIOn
    GPIO 编号。

  • direction
    输入输出模式:IN – 输入模式,OUT – 输出模式。

  • pullMode
    拉取模式:PULL_DISABLE – 浮空模式,PULL_PU – 上拉模式,PULL_PD – 下拉模式。

  • level
    设置引脚电平,0 - 设置引脚为低电平, 1- 设置引脚为高电平。

  • 返回值
    ​返回创建出来的对象。

获取引脚电平

Pin.read()
  • 参数

  • 返回值
    返回0 - 低电平,1 - 高电平。

设置引脚电平

Pin.write(value)
  • 参数
    value:1为高电平,0为低电平。

  • 返回值
    设置成功返回整型值0,失败返回-1。

源码分享

led.py

"""
@Author: zhangqin
@Date: 2022-08-20
@Description: led
@FilePath: led.py
"""
from machine import Pin
import utime

LED = Pin(Pin.GPIO9, Pin.OUT, Pin.PULL_DISABLE, 0)

if __name__ == '__main__':
for i in range(10):
    LED.write(0 if LED.read() else 1) 
    utime.sleep(1)