# micropython
**Repository Path**: oneos-ability/micropython
## Basic Information
- **Project Name**: micropython
- **Description**: MicroPython is optimised to run on microcontrollers and in constrained environments.
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2023-08-29
- **Last Updated**: 2024-05-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 版本历史:
### 版本:MPY_V2.1
#### 新增功能:
1.MicroPython标准库
[_thread](https://docs.micropython.org/en/latest/library/_thread.html) – 多线程支持
[math](https://docs.micropython.org/en/latest/library/math.html) – 数学函数功能
[ubinascii](https://docs.micropython.org/en/latest/library/binascii.html) – 二进制与 ASCII 码转换功能
[ucollections](https://docs.micropython.org/en/latest/library/collections.html) – 集合与容器类型
[uarray](https://docs.micropython.org/en/latest/library/array.html) – 数组存储功能
[uhashlib](https://docs.micropython.org/en/latest/library/hashlib.html) – 哈希算法
[ussl](https://docs.micropython.org/en/latest/library/ssl.html) – SSL/TLS 模块
[usocket](https://docs.micropython.org/en/latest/library/socket.html) – socket 模块
[uselect](https://docs.micropython.org/en/latest/library/select.html)– 在一组 streams 上等待事件
[uheapq](https://docs.micropython.org/en/latest/library/heapq.html) – 堆队列算法
[ujson](https://docs.micropython.org/en/latest/library/json.html) – JSON 编解码
[ure](https://docs.micropython.org/en/latest/library/re.html) – 正则表达式
[uzlib](https://docs.micropython.org/en/latest/library/zlib.html) – zlib 解压
[utime](https://docs.micropython.org/en/latest/library/time.html) – 时间相关功能
[uctypes](https://docs.micropython.org/en/latest/library/uctypes.html) – 二进制数据结构化功能
[urandom](https://docs.micropython.org/en/v1.12/library/uos.html?highlight=urandom) – 随机数功能
[ucryptolib](https://docs.micropython.org/en/latest/library/cryptolib.html) – 加密功能
2.Machine库:
I2C:
#### class machine.I2C
machine.I2C 类是 machine 模块下面的一个硬件类,用于对 I2C总线以及I2C总线上挂载的设备进行数据读写。
**构造函数**
I2C对象的构造函数说明如下:
| 构造函数 | class machine.I2C(id) |
| -------- | --------------------- |
| 功能 | 构造一个I2C设备对象 |
| 参数说明 | id : I2C设备号 |
| 返回值 | 返回创建的I2C设备对象 |
**实例方法**
machine.I2C 类包括如下实例方法:
| 方法名 | 说明 |
| ------------ | ---------------------------- |
| I2C.init() | 初始化I2C对象。 |
| I2C.deinit() | 关闭I2C对象。 |
| I2C.writeto() | 向I2C设备写入数据。 |
| I2C.readfrom() | 从I2C设备读取数据。 |
| I2C.readfrom_mem() | 向I2C设备的指定地址读取数据。|
详细说明如下:
| 方法名称 | I2C.init(id) |
| -------- | ------------------------------------------------------------ |
| 功能 | 初始化已创建的I2C设备对象。 |
| 参数说明 | id:I2C设备ID。 |
| 返回值 | 无。 |
| 方法名称 | I2C.deinit() |
| -------- | ------------------------------------------------------------ |
| 功能 | 关闭已初始化的I2C设备对象。 |
| 参数说明 | 无。 |
| 返回值 | 无。 |
| 方法名称 | I2C.writeto(addr, buffer) |
| -------- | ------------------------------------------------------------ |
| 功能 | 向I2C设备写入数据。 |
| 参数说明 | addr: I2C设备的传输地址。 buffer:待写入的数据。|
| 返回值 | 写入buffer的长度|
| 方法名称 | I2C.readfrom(addr, length) |
| -------- | ------------------------------------------------------------ |
| 功能 | 从I2C设备读取数据。 |
| 参数说明 | addr: I2C设备的传输地址。 注:此方法会进行I2C设备的重新连接,如果需要实现先写后读的功能,请使用readfrom_mem方法。length: 待读取的数据长度。 |
| 返回值 | 读取到的数据。|
| 方法名称 | I2C.readfrom_mem(addr, mem_addr, length) |
| -------- | ------------------------------------------------------------ |
| 功能 | 从I2C设备的指定地址上读取数据。 |
| 参数说明 | addr: I2C设备的传输地址。mem_addr: 待读取数据的起始地址。length: 待读取的数据长度。 |
| 返回值 | 读取到的数据。|
示例(通过I2C读写ATMLH 32K EEPROM芯片)
\>>>from machine import I2C
\>>>i2c = I2C(2)
\>>>i2c.init()
\>>>w=bytearray([64,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18])
\>>>i2c.writeto(0x50, w)
9
\>>>i2c.readfrom_mem(0x50, 0x40, 8)
b'\x11\x12\x13\x14\x15\x16\x17\x18'
\>>>i2c.readfrom_mem(0x50, 64, 8)
b'\x11\x12\x13\x14\x15\x16\x17\x18'
\>>>i2c.deinit()
SPI:
#### class machine SPI
machine.SPI 类是 machine 模块下面的一个硬件类,用于对SPI总线以及SPI总线上挂载的设备进行数据读写。
**构造函数**
SPI对象的构造函数说明如下:
| 构造函数 | class machine.SPI(spi_bus_id,dev_name,cs_num) |
| -------- | --------------------- |
| 功能 | 构造一个SPI设备对象。 |
| 参数说明 | id:SPI总线id。dev_name:spi设备名。cs_num:片选信号引脚。|
| 返回值 | 返回创建的SPI设备对象 |
**常量**
machine.SPI 类包括如下常量
| 极性 | 说明|
| -------- | --------------------- |
| SPI.POLARITY_LOW | 低电平。 |
| SPI.POLARITY_HIGH |高电平。|
| 相位 | 说明|
| -------- | --------------------- |
| SPI.PHASE_0 | 0相位,第一个边沿。 |
| SPI.PHASE_1 |1相位,第二个边沿。|
| 传输方式(大小端) | 说明|
| -------- | --------------------- |
| SPI.MSB | 最高有效位传输方式。 |
| SPI.LSB |最低有效位传输方式。|
**实例方法**
machine.SPI 类包括如下实例方法
| 方法名 | 说明 |
| ------------ | ---------------------------- |
| SPI.init() | 初始化SPI设备对象。 |
| SPI.deinit() | 关闭SPI对象。 |
| SPI.read() | 从SPI设备中读入数据。 |
| SPI.readinto() | 从SPI设备中读入数据,并输出到指定buffer。 |
| SPI.write() | 向SPI设备写入数据。|
| SPI.write_readinto() | 向SPI设备写入数据,并将返回的数据写入指定的buffer。|
详细说明如下:
| 方法名称 | SPI.init(baudrate, polarity=SPI.POLARITY_LOW,phase=SPI.PHASE_0,firstbit=SPI.LSB) |
| -------- | ------------------------------------------------------------ |
| 功能 | 初始化已创建的SPI设备对象。 |
| 参数说明 | baudrate: 波特率。polarity:极性,可取SPI.POLARITY_LOW、SPI.POLARITY_HIGH。phase:相位,可取SPI.PHASE_0、SPI.PHASE_1。firstbit: 传输方式,可取SPI.MSB、 SPI.LSB。|
| 返回值 | 无。 |
| 方法名称 | SPI.read(size, addr) |
| -------- | ------------------------------------------------------------ |
| 功能 | 初始化已创建的SPI设备对象。 |
| 参数说明 | size: 读取长度。addr:SPI设备接收数据缓冲区地址。|
| 返回值 | 读取到的数据。 |
| 方法名称 | SPI.readinto(buffer, addr) |
| -------- | ------------------------------------------------------------ |
| 功能 | 从指定地址读取数据到指定的buffer。 |
| 参数说明 | buffer: 数据存放缓存。addr:SPI设备接收数据缓冲区地址。|
| 返回值 | 无。 |
| 方法名称 | SPI.write(buffer) |
| -------- | ------------------------------------------------------------ |
| 功能 | 将指定buffer中的数据发送到SPI设备的发送数据缓冲区。 |
| 参数说明 | buffer: 待发送的数据。|
| 返回值 | 无。 |
| 方法名称 | SPI.write_readinfo(write_buf, read_buf) |
| -------- | ------------------------------------------------------------ |
| 功能 | 将指定buffer中的数据发送到SPI设备的发送数据缓冲区,并从SPI设备的接收数据缓冲区读取数据。 |
| 参数说明 | write_buf: 待发送的数据。read_buf: 读取数据的存放缓存。|
| 返回值 | 无。 |
示例
/>>>from machine import SPI
/>>>import utime
/>>>
/>>>spi = SPI(2, "spi10", 14)
/>>>
/>>>spi.init(6000000, polarity=SPI.POLARITY_LOW, phase=SPI.PHASE_0, firstbit=SPI.MSB)
/>>>
/>>>buf = bytearray(8)
/>>>spi.readinto(buf, 0xa5)#SPI设备建立连接后,对端发送abcdefgh
/>>>print("readinto test ---- ", buf)
readinto test ---- bytearray(b'bbcdefgh')
/>>>utime.sleep_ms(100)
/>>>
/>>>buf = spi.read(8, 0xa5)
/>>>print("read test ---- ", buf)
readinto test ---- bytearray(b'abcdefgh')
/>>>utime.sleep_ms(100)
/>>>
/>>>spi.write("hijklmno")#向此SPI对象连接的对端设备发送‘hijklmno’,对端设备收到此数据。
/>>>
/>>>utime.sleep_ms(100)
/>>>
/>>>buf = bytearray(8)
/>>>spi.write_readinto("hijklmno", buf)#向对端设备发送‘hijklmno’,对端设备发送‘abcdefgh’。
/>>>print("write_readinto test ---- ", buf)
readinto test ---- bytearray(b'abcdefgh')
/>>>utime.sleep_ms(100)
/>>>spi.deinit()
其他功能:
1.文件系统挂载支持FLASH分区挂载文件系统。
2.支持repl开关和占用内存配置。
3.SPI通信中,SPI从设备(接收端)处理第一次消息时,会存在不处理空包的情况,此时会造成第一次接收消息的第一位数据错误。
### 版本:MPY_V2.0
#### 新增功能:
## Machine库
片上资源硬件控制模块库。
#### class machine.Pin
machine.Pin 类是 machine 模块下面的一个硬件类,用于对 GPIO 引脚的配置和控制,并提供对 Pin 设备的操作方法。
Pin 对象用于控制GPIO引脚。通常与一个物理引脚相关联,可以驱动输出电平和读取输入电平。Pin 类中有设置引脚模式(输入/输出)的方法,也有获取和设置引脚电平的方法。
Pin对象不用于引脚的复用,只用于GPIO输入与输出模式,对于复用模式可直接使用对应功能的类对象进行使用。
**常量**
| 引脚模式 |说明 |
| ---------------------- | ---------------------------------- |
| Pin.IN | 设置为输入模式。 |
| Pin.OUT_PP | 设置为推挽输出模式。 |
| Pin.OUT_OD | 设置为开漏输出模式。 |
| 中断触发类型 |说明 |
| ---------------------- | ---------------------------------- |
| Pin.IRQ_RISING | 外部中断模式:上升沿触发中断。 |
| Pin.IRQ_FALLING | 外部中断模式:下降沿触发中断。 |
| Pin.IRQ_RISING_FALLING | 外部中断模式:上升和下降沿触发中断。 |
| Pin.IRQ_LOW_LEVE | 外部中断模式:低电平触发。 |
| Pin.IRQ_HIGH_LEVEL | 外部中断模式:高电平触发。 |
| 上/下拉模式 | 说明 |
| ------------- | ----------------------------- |
| Pin.PULL_DOWN | 选择上/下拉模式:使能下拉模式。 |
| Pin.PULL_UP | 使能上拉模式。 |
**函数**
| 函数名称 | Pin.index(base,port) |
| -------- | ------------------------------------------------------------ |
| 功能 | 获取操作系统底层的GPIO索引号(OneOS自有的一套GPIO-Pin的映射关系)。 |
| 参数说明 | base: 传入Pin的组号,如‘A’ ,‘B’等。
port: 传入Pin的端口号。 |
| 返回值 | 返回索引号。 |
注:该函数用于pin脚的索引,如操作"PA_3",则传入Pin.index('A', 3),然后使用返回值进行Pin对象的构造。
**构造函数**
Pin对象的构造函数说明如下:
| 构造函数 | class machine.Pin(id, mode = -1, value=-1, pull = -1) |
| -------- | ------------------------------------------------------------ |
| 功能 | 构造一个Pin对象。 |
| 参数说明 | id:可采用元组形式(name,pin)传入参数或者只传pin参数,其中name为自定义的引脚名,pin为设备驱动的引脚号(Pin.index计算得到),如传入:(“led1”,22),表示自定义引脚名为“led1”,其引脚号为22;若只传入22,则表示引脚名为NULL,引脚号为22;
mode: 指定引脚模式,可选常量见Pin常量中引脚模式部分相关常量。
value: 如果配置成输出形式,可以通过这个参数设定初始输出值,可传入逻辑0或者逻辑1。
pull: 如果引脚可以软件配置上下拉电阻,通过这个参数指定上下拉模式,参数可选Pin常量中上/下拉模式部分相关常量。
若mode、pull、value未传入,则此构造函数不对pin引脚进行相关配置,即按照芯片默认设置或已有配置。 |
| 返回值 | 返回创建的machine.Pin类对象 |
注:1、mode 目前暂不需支持 ALT_PP、ALT_OD、ANALOG。
2、value 只对模式为 OUT_PP、OUT_OD 有效。
3、id中传入的引脚号为Pin.index()计算得到。
4、并不是所有引脚都可设置为指定的模式,用户需参照datasheet配合使用,避免设置不生效或返回异常。
**实例方法**
machine.Pin 类包括如下实例方法
| 方法名 | 说明 |
| ------------ | ---------------------------- |
| Pin.init() | 初始化Pin对象。 |
| Pin.deinit() | 关闭Pin对象。 |
| Pin.value() | 获取/设置引脚逻辑电平。 |
| Pin.name() | 获取构造时用户自定义的引脚名。 |
| Pin.pin() | 获取构造时设置的pin引脚号。 |
| Pin.port() | 获取pin引脚对应的端口号。 |
| Pin.mode() | 获取引脚模式。 |
| Pin.irq() | 设置引脚的中断模式和回调函数。 |
详细说明如下:
| 方法名称 | Pin.init(mode = -1, value=-1, pull = -1) |
| -------- | ------------------------------------------------------------ |
| 功能 | 根据参数重新初始化引脚配置。 |
| 参数说明 | mode:指定引脚模式,可选常量见引脚模式部分相关常量。
value:如果配置成输出形式,可以通过这个参数设定初始输出值,可传入逻辑0或者逻辑1。
pull:如果引脚可以软件配置上下拉电阻,通过这个参数指定上下拉模式,参数
可选Pin常量中上/下拉模式部分相关常量。 |
| 返回值 | 固定返回None。 |
| 方法名称 | Pin.deinit() |
| -------- | ------------ |
| 功能 | 关闭Pin对象。 |
| 参数说明 | 无参数 |
| 返回值 | 固定返回None。 |
注:关闭 Pin 对象后,需重新 init 才能正常使用 Pin 对象。
| 方法名称 | Pin.value([x]) |
| -------- | ------------------------------------------------------------ |
| 功能 | 获取/设置引脚逻辑电平。 |
| 参数说明 | [x]为可选参数,若未给定参数则为读取当前引脚的值,若给定参数则为设定引脚的值,可传入逻辑0或逻辑1。 |
| 返回值 | 没有参数时返回引脚的逻辑电平,有参数时返回None。 |
| 方法名称 | Pin.name() |
| -------- | ---------------------------- |
| 功能 | 获取构造时用户自定义的引脚名。|
| 参数说明 | 无参数 |
| 返回值 | 返回用户自定义的引脚名。 |
| 方法名称 | Pin.pin() |
| -------- | ------------------------- |
| 功能 | 获取构造时设置的pin引脚号。 |
| 参数说明 | 无参数 |
| 返回值 | 返回构造时设置的pin引脚号。 |
| 方法名称 | Pin.port() |
| -------- | --------------------------- |
| 功能 | 获取pin引脚对应的port端口号。 |
| 参数说明 | 无参数 |
| 返回值 | 返回pin引脚对应的port端口号。 |
| 方法名称 | Pin.mode() |
| -------- | ----------------------------------------------------------- |
| 功能 | 获取当前引脚的模式。 |
| 参数说明 | 无参数 |
| 返回值 | 返回当前引脚模式,形式为int类型,其值与对应模式常量之一匹配。 |
| 方法名称 | Pin.irq(irqmode,funcb) |
| -------- | ------------------------------------------------------------ |
| 功能 | 获取/设置引脚的中断模式。 |
| 参数说明 | irqmode:传入参数见Pin常量中中断触发类型部分相关常量,模式可按位进行或操作。
funcb:设置中断回调函数。 |
| 返回值 | 固定返回None |
**示例**
\>>>from machine import Pin
\>>>Pin.index('E', 7)
\>>>Pin.index('E', 8)
\>>>Pin.index('E', 9)
\>>>pin1=Pin(("led_r",71), Pin.OUT_PP)
\>>>pin2=Pin(("led_g",72), Pin.OUT_PP)
\>>>pin3=Pin(("led_b",73), Pin.OUT_PP)
\>>>pin1.init(mode=Pin.OUT_OD,value=1)
\>>>pin2.init(mode=Pin.OUT_OD,value=1)
\>>>pin3.init(mode=Pin.OUT_OD,value=1)
\>>>pin1.pin()
\>>>pin3.port()
\>>>pin1.value(1) #红灯亮
\>>>pin1.value(0) #红灯灭
\>>>pin1.value()
\>>>pin1.deinit()
#### class machine.UART
machine.UART 类是machine模块下面的一个硬件类,用于对 UART 的配置和控制,提供对 UART 设备的操作方法。
**常量**
| 数据长度 | |
| ----------- | -------------- |
| UART.BITS_7 | 数据长度为7bit。 |
| UART.BITS_8 | 数据长度为8bit。 |
| UART.BITS_9 | 数据长度为9bit。 |
| 校验位 | |
| ---------------- | ---------- |
| UART.PARITY_NONE | 没有校验位。 |
| UART.PARITY_EVEN | 偶数位校验。 |
| UART.PARITY_ODD | 奇数位校验。 |
| 停止位 | |
| ----------- | ------------- |
| UART.STOP_1 | 停止位长度为1。 |
| UART.STOP_2 | 停止位长度为2。 |
| 流控类型 | |
| ------------ | --------------- |
| UART.FC_RTS | 硬件流控使用RTS。 |
| UART.FC_CTS | 硬件流控使用CTS。 |
| UART.FC_NONE | 无流控。 |
**构造函数**
UART对象的构造函数说明如下:
| 构造函数 | class machine.UART(id, …) |
| -------- | ------------------------------------------------------------ |
| 功能 | 构造一个UART对象。 |
| 参数说明 | id:UART编号,如传入1表示uart1设备。
省略部分与Init函数参数一致,可对创建的uart对象进行初始化。|
| 返回值 | 创建成功,返回创建的machine.UART类对象。 |
**实例方法**
machine. UART 类包括如下实例方法:
| 方法名 | 说明 |
| ---------------- | ------------------------ |
| UART.init() | 初始化UART总线。 |
| UART.deinit() | 关闭UART总线。 |
| UART.read() | 读取字符。 |
| UART.readline() | 读一行数据,以换行符结尾。 |
| UART.readchar() | 读取一个字节数据。 |
| UART.write() | 将 buf 中的数据写入总线。 |
| UART.writechar() | 向总线写入一个字节数据。 |
详细说明如下:
| 方法名称 | UART.init(baudrate=115200,
[bits=8],
[parity=UART.PARITY_NONE],
[stop=UART.STOP_1],
[flow= UART.FC_NONE],
[timeout=0],
[timeout_char=0],
[read_buf_len=64]) |
| -------- | ------------------------------------------------------------ |
| 功能 | 根据参数初始化UART配置。 |
| 参数说明 | baudrate:必选,设置UART波特率,默认115200。
bits:可选,设置每次发送数据的长度,UART常量中数据长度部分相关常量,默认设置为8。
parity:可选,设置校验方式,UART常量中校验位部分相关常量,默认设置为无校验。
stop:可选, 设置停止位,UART常量中停止位部分相关常量,默认为1位停止位。
flow:可选,设置流控类型,UART常量中流控类型部分相关常量,可采用或进行多种选择,默认选择无流控。
timeout:可选, 设置等待读写一个字符时的超时时间(单位ms),默认为0。
timeout_char:可选,设置写入或读取字符之间等待的超时时间(单位ms)。
read_buf_len:可选,设置读取缓冲区的字符长度(禁用为0),默认64字节。 |
| 返回值 | 固定返回None |
| 方法名称 | UART.deinit() |
| -------- | ------------- |
| 功能 | 关闭UART总线 |
| 参数说明 | 无参数 |
| 返回值 | 固定返回None |
| 方法名称 | UART.read([nbytes]) |
| -------- | ------------------------------------------------------------ |
| 功能 | 读取字符 |
| 参数说明 | [nbytes]为可选参数,若传入nbytes,则最多读取nbytes个字节数据;若未传入,则会以阻塞的方式读取尽可能多的数据,大概阻塞20秒左右。 |
| 返回值 | 返回一个包含读入数据的字节对象。如果超时则返回 None。 |
| 方法名称 | UART.readline() |
| -------- | -------------------------------------------------------------------------------------------------------------- |
| 功能 | 读一行数据,以换行符结尾。如果存在这样的行,则立即返回。如果超时,则无论是否存在换行符,都会返回所有可用数据。 |
| 参数说明 | 无参数 |
| 返回值 | 返回行读取数据,如果超时或无可用数据则返回None。 |
注:若数据接收缓存区满但未超时也会返回所有可用数据
| 方法名称 | UART.readchar() |
| -------- | ------------------------------------------ |
| 功能 | 读取一个字节数据。 |
| 参数说明 | 无参数 |
| 返回值 | 返回读取到字符ASCII码,如果超时则返回 None。 |
| 方法名称 | UART.write(buf) |
| -------- | ------------------------------------- |
| 功能 | 将 buf 中的数据写入总线。 |
| 参数说明 | buf:欲写入的字节数据。 |
| 返回值 | 返回写入的字节数,如果超时则返回 None。|
| 方法名称 | UART.writechar(buf) |
| -------- | -------------------------------- |
| 功能 | 将 buf 中的一字节数据写入总线。 |
| 参数说明 | buf:欲写入的一字节数据的ASCII码。 |
| 返回值 | 返回 None。 |
**示例**
\>>>from machine import UART
\>>>uart2=UART(2)
\>>>uart2.init(115200)
\>>>uart2.write("hello")
\>>>uart2.writechar(49)
(串口输入“hello world\r\n”)
\>>>uart2.read(2)
b'he'
\>>>uart2.readchar()
108
\>>>uart2.read()
b'lo world\r\n'
(串口输入“hello \n world\r\n”)
\>>>uart2.readline()
(串口输入“hello \n world”)
b'hello\r\n'
\>>>uart2.read()
b'world\r\n'
\>>>uart2.deinit()
#### class machine.RTC
machine.RTC类是machine模块下面的一个硬件类,用于计时使用。
**构造函数**
RTC对象的构造函数说明如下:
| 构造函数 | class machine.RTC() |
| -------- | ------------------- |
| 功能 | 构造一个RTC对象。 |
| 参数说明 | 无 |
| 返回值 | 返回创建的RTC对象。 |
**实例方法**
RTC类包括如下实例方法:
| 方法名 | 说明 |
| ------------- | ------------------ |
| RTC.setdate() | 设置RTC日期。 |
| RTC.settime() | 设置RTC时间。 |
| RTC.now() | 读取当前日期与时间。 |
详细说明如下:
| 方法名称 | RTC.setdate([year], [month], [day]) |
| -------- | ------------------------------------ |
| 功能 | 设置RTC日期。 |
| 参数说明 | 传入三个整型参数,分别代表年、月、日。 |
| 返回值 | 固定返回None。 |
| 方法名称 | RTC.settime([hour], [minute], [second]) |
| -------- | ------------------------------------ |
| 功能 | 设置RTC时间。 |
| 参数说明 | 传入三个整型参数,分别代表时、分、秒。 |
| 返回值 | 固定返回None。 |
| 方法名称 | RTC.now() |
| -------- | ----------------------------- |
| 功能 | 读取当前日期与时间。 |
| 参数说明 | 无参数 |
| 返回值 | 以str的形式返回当前日期与时间。 |
**示例**
\>>> from machine import RTC
\>>> rtc=RTC()
\>>> rtc.settime(14,43,14)
\>>> rtc.setdate(2020,8,12)
\>>> rtc.now()
'Wed Apr 21 14:43:17 2021'
#### class machine.PWM
machine.PWM 类是machine模块下的一个硬件类,用于指定PWM设备的配置和控制,提供对PWM设备的操作方法。
**构造函数**
PWM对象的构造函数说明如下:
| 构造函数 | class machine.PWM(id, channel, freq, duty) |
| -------- | ------------------------------------------------------------ |
| 功能 | 构造一个PWM对象。 |
| 参数说明 | id:PWM设备编号。
channel:选择PWM通道号。
freq:设置初始化频率。
duty:设置占空比。 |
| 返回值 | 返回创建的machine.PWM类对象。 |
**实例方法**
machine.PWM 类包括如下实例方法
| 方法名 | 说明 |
| ---------------- | ------------------------------ |
| PWM.init() | 初始化PWM对象通道 |
| PWM.deinit() | 关闭PWM对象通道 |
| PWM.freq([freq]) | 获取/设置 PWM 对象的频率 |
| PWM.duty([duty]) | 获取/设置 PWM 对象的占空比数值 |
详细说明如下:
| 方法名称 | PWM.init(freq, duty) |
| -------- | ------------------------------------------------------------ |
| 功能 | 初始化PWM对象通道。 |
| 参数说明 | freq:设置初始化频率,频率范围视硬件而定。
duty:设置占空比,设置范围为0~100。 |
| 返回值 | 返回None |
| 方法名称 | PWM.deinit() |
| -------- | --------------- |
| 功能 | 关闭PWM对象通道。 |
| 参数说明 | 无参数 |
| 返回值 | 返回None。 |
| 方法名称 | PWM.freq([freq]) |
| -------- | ------------------------------------------------------------ |
| 功能 | 设置/查看 PWM 对象的频率。 |
| 参数说明 | [freq]为可选参数,若传入[freq],则根据传入参数设置PWM对象频率。设置范围视硬件而定,否则返回当前频率。 |
| 返回值 | 传入参数时,返回None; 未传入参数时返回当前PWM频率。 |
| 方法名称 | PWM.duty([duty]) |
| -------- | ------------------------------------------------------------ |
| 功能 | 设置/查看 PWM 对象的占空比数值。 |
| 参数说明 | [duty]为可选参数,若传入[duty],则根据传入参数设置PWM对象占空比,否则返回当前占空比。设置范围为0~100。|
| 返回值 | 传入参数时,返回None; 未传入参数时返回当前的占空比。 |
**示例**
\>>> from machine import PWM
\>>> pwm = PWM(4, 1, 1000, 50)
\>>> pwm.init(1000, 50)
\>>> pwm.freq()
1000
\>>> pwm.freq(2000)
\>>> pwm.duty()
50
\>>> pwm.duty(20)
\>>> pwm.deinit()
#### class machine.ADC
ADC类是machine模块下面的ADC类,例如在万耦开发板上,对应的就是其ADC设备。
**构造函数**
ADC对象的构造函数说明如下:
| 构造函数 | class machine.ADC(id, channel) |
| -------- | ----------------------------------------------- |
| 功能 | 构造一个ADC对象。 |
| 参数说明 | id: ADC设备的设备号, 如果设-1, 则表示设备号不存在,adc设备名字就是“adc”。
channel: 通道号。|
| 返回值 | 返回创建的ADC对象。 |
注:因为adc设备支持的通道号各不相同,因此暂不支持在参数输入阶段拦截不支持的通道号。不支持的通道号会在read方法中打印错误。
**实例方法**
machine.ADC类包括如下实例方法:
| 方法名 | 说明 |
| ------------ | ------------- |
| ADC.init() | 初始化ADC对象。 |
| ADC.read() | 读取电压。 |
| ADC.deinit() | 关闭对象。 |
详细说明如下:
| 方法名称 | ADC.init([channel]) |
| -------- | ------------------------------------ |
| 功能 | 初始化ADC。 |
| 参数说明 | channel: 可选参数,通道号。不输入时,使用创建对象时的通道。|
| 返回值 | 成功返回None,失败触发ValueError异常。 |
| 方法名称 | ADC.read([channel]) |
| -------- | ---------------------------------------------------------- |
| 功能 | 读取ADC。 |
| 参数说明 | channel:可选参数,通道号。不传参数时,读取init通道数据,否则读取创建对象时的通道数据。|
| 返回值 | 成功返回None,失败触发ValueError异常。 |
| 方法名称 | ADC.deinit() |
| -------- | ------------------------------------ |
| 功能 | 关闭ADC。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None,失败触发ValueError异常。 |
**示例**
\>>>from machine import ADC
\>>>temp= ADC(-1, 1)
\>>>temp.init()
\>>>temp.read()
260
\>>>temp.read(2)
323
\>>>temp.deinit()
#### class machine.WDT
WDT类是machine模块下面的WDT类,例如在万耦开发板上,对应的是其mcu的wdt。
**构造函数**
WDT对象的构造函数说明如下:
| 构造函数 | class machine.WDT() |
| -------- | ------------------- |
| 功能 | 构造一个WDT对象。 |
| 参数说明 | 无 |
| 返回值 | 返回创建的WDT对象。 |
**实例方法**
machine.WDT类包括如下实例方法:
| 方法名 | 说明 |
| ------------ | -------------------------- |
| WDT.init() | 初始化看门狗对象。 |
| WDT.start() | 启动看门狗。 |
| WDT.feed() | 喂狗,刷新看门狗。 |
| WDT.deinit() | 关闭看门狗(mpy方法已实现,硬件驱动未实现)。 |
详细说明如下:
| 方法名称 | WDT.init() |
| -------- | ------------------------------------ |
| 功能 | 初始WDT。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
| 方法名称 | WDT.start() |
| -------- | ------------------------------------ |
| 功能 | 启动看门狗。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
| 方法名称 | WDT.feed () |
| -------- | ------------------------------------ |
| 功能 | 喂狗,刷新看门狗。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
| 方法名称 | WDT.deinit () |
| -------- | ------------------------------------ |
| 功能 | 关闭看门狗。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
**示例**
```python
import utime
from machine import WDT
def wdt_test():
wdt = WDT(1)
wdt.init()
wdt.start()
wdt.feed()
count= 0
while count < 11:
utime.sleep(1)
count += 1
print("watch dog keep alive for :%ds\n" % count)
wdt.feed()
count = 0
while True:
print("watch dog stop feed for :%d.%ds\n" % (count / 10, count % 10))
utime.sleep_ms(100)
count += 1
wdt_test()
```
#### class machine.Timer
machine.Timer用于处理周期性和定时性事件。
**常量**
| 定时类型 | |
| -------------- | -------------------------------- |
| Timer.PERIODIC | 定时器会周期性执行设置的回调函数。 |
| Timer.ONE_SHOT | 定时器只执行一次设置的回调函数。 |
**构造函数**
Timer对象的构造函数说明如下:
| 构造函数 | class machine.Timer(name) |
| -------- | ---------------------------- |
| 功能 | 构造一个Timer对象。 |
| 参数说明 | name:以str格式传入定时器名称。 |
| 返回值 | 返回创建的Timer对象。 |
**实例方法**
Timer类包括如下实例方法:
| 方法名 | 说明 |
| -------------- | ---------- |
| Timer.init() | 启动定时器。 |
| Timer.deinit() | 关闭定时器。 |
| Timer.tick_per_second() | 获取每秒有多少个tick,即系统 1 tick对应的时间。 |
详细说明如下:
| 方法名称 | Timer.init(mode, period, callback) |
| -------- | ------------------------------------------------------------ |
| 功能 | 启动定时器。 |
| 参数说明 | mode:选择定时类型。
period:选择定时时间,单位ms。
callback:设置定时回调函数。 |
| 返回值 | 成功返回None,失败触发ValueError异常。 |
| 方法名称 | Timer.deinit() |
| -------- | -------------- |
| 功能 | 关闭定时器 |
| 参数说明 | 无 |
| 返回值 | 固定返回None |
**示例**
\>>>def cb_test(device):
... print("Timer callback test")
...
\>>> from machine import Timer
\>>> Timer.tick_per_second()
1000
\>>> timer = Timer('test')
\>>> timer.init(timer.ONE_SHOT, 1000, cb_test)
Timer callback test
\>>>timer.deinit()
\>>> timer.init(timer.PERIODIC, 1000, cb_test)
Timer callback test
Timer callback test
Timer callback test
Timer callback test
Timer callback test
Timer callback test
Timer callback test
\>>>timer.deinit()
## Device库
外设资源硬件控制库。
#### class device.ALS_PS
ALS_PS类是device模块下面的一个硬件类,用于读取光强模块与距离感应模块的参数。
万耦开发板上板载了一块光强+距离传感器,型号为AP3216C,通过I2C3进行进行通信。
**常量**
| 采样类型 | 说明 |
| ----------------- | ---------------------- |
| ALS_PS.LIGHT | 光照强度采样。 |
| ALS_PS.PROXIMITYS | 距离采样。 |
**构造函数**
ALS_PS对象的构造函数说明如下:
| 构造函数 | class device.ALS_PS() |
| -------- | ------------------------------------------------------------ |
| 功能 | 构造一个ALS_PS对象。 |
| 参数说明 | 无。 |
| 返回值 | 返回创建的ALS_PS对象 。 |
**实例方法**
device.ALS_PS类包括如下实例方法:
| 方法名 | 说明 |
| --------------- | ---------------- |
| ALS_PS.init() | 初始化ALS_PS对象。 |
| ALS_PS.read() | 读取光强/距离值。 |
| ALS_PS.deinit() | 关闭ALS_PS传感器。 |
详细说明如下:
| 方法名称 | ALS_PS.init() |
| -------- | -------------------------- |
| 功能 | 初始化光强传感器。 |
| 参数说明 | 无。 |
| 返回值 | 成功返回None,失败触发异常。 |
| 方法名称 | ALS_PS.read([type]) |
| -------- | ------------------------------------------------------------ |
| 功能 | 读取光强、距离值。 |
| 参数说明 | [type]:采样类型,该参数为可选参数,值为常量中的“采样类型”;传入该参数时,功能为获取指定类型的采样值;未传入该参数时,功能为同时获取光强及距离的采样值。 |
| 返回值 | 未传入参数时,以字典的形式返回光强及距离,如{'PROXIMITYS': 43, 'LIGHT': 474.0}; 传入参数时,返回指定类型的采样值。 |
注:光照越强,光强采样值越大,距离越近,距离采样值越大。
| 方法名称 | ALS_PS.deinit() |
| -------- | ------------------------------------ |
| 功能 | 关闭ALS_PS传感器。 |
| 参数说明 | 无参数 |
| 返回值 | 成功返回None,失败触发ValueError异常。 |
注:关闭ALS_PS传感器后,需重新init才能正常使用ALS_PS对象。
**示例**
\>>>from device import ALS_PS
\>>> light=ALS_PS() \# 创建ALS_PS设备对象
\>>> light.init() \#对象初始化
\>>> light.read(ALS_PS.LIGHT) \#读取光强
113.0
\>>> light.read(ALS_PS.PROXIMITYS) \#读取距离
1023
\>>> light.read() \#读取光强及距离
{'PROXIMITYS': 1023, 'LIGHT': 7.0}
\>>> light.deinit()
#### class device.AUDIO
AUDIO类是device模块下面的AUDIO类,例如在万耦开发板上,对应音频解码芯片,其麦耳接孔为3.5mm无麦耳机接孔。
**构造函数**
AUDIO对象的构造函数说明如下:
| 构造函数 | class device.audio() |
| -------- | -------------------- |
| 功能 | 构造一个AUDIO对象。 |
| 参数说明 | 无 |
| 返回值 | 返回创建的AUDIO对象。 |
**实例方法**
device. AUDIO类包括如下实例方法:
| 方法名 | 说明 |
| -------------- | --------------- |
| AUDIO.init() | 初始化AUDIO对象。 |
| AUDIO.volume() | 设置AUDIO音量。 |
| AUDIO.player() | 播放wav音频文件。 |
| AUDIO.stop() | 暂停播放。 |
| AUDIO.start() | 继续开始播放。 |
| AUDIO.deinit() | 注销AUDIO对象。 |
详细说明如下:
| 方法名称 | AUDIO.init() |
| -------- | ------------------------------------ |
| 功能 | 初始AUDIO。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
| 方法名称 | AUDIO.volume(volume) |
| -------- | ------------------------------------ |
| 功能 | 设置音量参数。 |
| 参数说明 | volume:音量。 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
| 方法名称 | AUDIO.player(file) |
| -------- | ------------------ |
| 功能 | 播放wav音频文件。 |
| 参数说明 | file:文件名。 |
| 返回值 | 成功返回None。 |
| 方法名称 | AUDIO.stop() |
| -------- | ------------ |
| 功能 | 暂停播放。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None。 |
| 方法名称 | AUDIO.start() |
| -------- | ------------- |
| 功能 | 继续开始播放。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None。 |
| 方法名称 | AUDIO.deinit() |
| -------- | ------------------------------------ |
| 功能 | 关闭AUDIO。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
**示例**
\>>>from device import AUDIO
\>>>audio= AUDIO()
\>>>audio.init()
\>>>audio.volume(35)
\>>>audio.player('3.wav')
\>>>audio.stop()
\>>>audio.start()
\>>>audio.deinit()
#### class device.BEEP
BEEP类是device模块下面的BEEP类,对应开发板上的蜂鸣器
**构造函数**
| 构造函数 | class device.BEEP([pin]) |
| -------- | ------------------------------------------------------------ |
| 功能 | 构造一个BEEP对象 |
| 参数说明 | 无 |
| 返回值 | 返回创建的BEEP对象 |
**实例方法**
device.BEEP类包括如下实例方法:
| 方法名 | 说明 |
| ------------- | ------------------- |
| BEEP.init() | 初始化BEEP对象 |
| BEEP.on() | 打开BEEP, BEEP鸣响 |
| BEEP.off() | 关闭BEEP, BEEP无声 |
| BEEP.deinit() | 注销BEEP |
详细说明如下:
| 方法名称 | BEEP.init([pin]) |
| -------- | ------------------------------------------------------------ |
| 功能 | 初始BEEP |
| 参数说明 | pin: beep的pin索引值;可以缺省; 当与实例化时同时缺省会报 pin为空的错误 |
| 返回值 | 成功返回None,失败触发ValueError异常 |
| 方法名称 | BEEP.on() |
| -------- | ------------------------------------ |
| 功能 | 打开BEEP |
| 参数说明 | 无 |
| 返回值 | 成功返回None,失败触发ValueError异常 |
| 方法名称 | BEEP.off() |
| -------- | ------------------------------------ |
| 功能 | 关闭BEEP |
| 参数说明 | 无 |
| 返回值 | 成功返回None,失败触发ValueError异常 |
| 方法名称 | BEEP.deinit() |
| -------- | ------------------------------------ |
| 功能 | 注销BEEP |
| 参数说明 | 无 |
| 返回值 | 成功返回None,失败触发ValueError异常 |
**示例**
\>>> from device import BEEP
\>>> beep = BEEP(18)
\>>> beep.init()
\>>> beep.on()
\>>> beep.off()
\>>> beep.deinit()
#### class device.Humiture
Humiture类是device模块下面的Humiture类,例如在万耦开发板上,对应的其温湿度传感器,型号是aht10。
**常量**
| 采样类型 | |
| -------------------- | -------- |
| Humiture.TEMPERATURE | 温度采样 |
| Humiture.HUMIDITY | 湿度采样 |
**构造函数**
Humiture对象的构造函数说明如下:
| 构造函数 | class device.Humiture () |
| -------- | ------------------------ |
| 功能 | 构造一个Humiture对象。 |
| 参数说明 | 无 |
| 返回值 | 返回创建的温湿度对象。 |
**实例方法**
device.Humiture类包括如下实例方法:
| 方法名 | 说明 |
| ----------------- | ------------------------ |
| Humiture.init() | 初始化Humiture对象。 |
| Humiture.read() | 读取温湿度传感器对象的值。 |
| Humiture.deinit() | 关闭Humiture传感器。 |
详细说明如下:
| 方法名称 | Humiture.init() |
| -------- | ------------------------------------ |
| 功能 | 初始Humiture。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
| 方法名称 | Humiture.read([type]) |
| -------- | ------------------------------------------------------------ |
| 功能 | 获取Humiture的温度计和湿度计的值或者只获取其中之一的值。 |
| 参数说明 | [type]:采样类型,该参数为可选参数。 |
| 返回值 | 1:当无参数时返回值为温度和湿度的字典组合值。
2:当参数为Humiture.TEMPERATURE获取的值是温度值。
3:当参数Humiture.HUMIDITY获取的值是湿度值。
4:失败触发ValueError异常。 |
| 方法名称 | Humiture.deinit() |
| -------- | ------------------------------------ |
| 功能 | 关闭Humiture传感器。 |
| 参数说明 | 无参数 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
**示例**
\>>>from device import Humiture
\>>> hum = Humiture()
\>>> hum.init()
\>>> hum.read()
{'HUMIDITY': 43.0, 'TEMPERATURE': 28.0}
\>>> hum.read(hum.TEMPERATURE)
28.0
\>>> hum.read(hum.HUMIDITY)
42.0
\>>> hum.deinit()
#### class device.KEY
KEY类是device模块下面的按键类,例如在万耦开发板上,则对应其4个按键。
**构造函数**
KEY对象的构造函数说明如下:
| 构造函数 | class device.KEY(key_num, pin_num) |
| -------- | ---------------------------------- |
| 功能 | 构造一个key对象。 |
| 参数说明 | key_num : key编号 |
| | pin_num:key的pin索引 |
| 返回值 | 返回创建的对应的按键key对象。 |
**实例方法**
device.KEY类包括如下实例方法:
| 方法名 | 说明 |
| -------------- | ---------------------------- |
| KEY.init() | 初始化KEY对象。 |
| KEY.callback() | 将一个函数设置为按键回调函数。 |
| KEY.deinit() | 关闭KEY。 |
详细说明如下:
| 方法名称 | KEY.init() |
| -------- | ------------------------------------ |
| 功能 | 初始化key。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None,失败触发ValueError异常。 |
| 方法名称 | KEY.callback(func) |
| -------- | ------------------------------------ |
| 功能 | 设置回调函数。 |
| 参数说明 | func:回调函数名 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
| 方法名称 | KEY.deinit() |
| -------- | ------------------------------------ |
| 功能 | 关闭key。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None,失败触发ValueError异常。 |
**示例**
\>>> def f0(x):
... print("key0 is pressed")
...
\>>> def f1(x):
... print("key1 is pressed")
...
\>>> def f2(x):
... print("key2 is pressed")
...
\>>> def f3(x):
... print("key3 is pressed")
\>>> from device import KEY
\>>> key0 = KEY(0, 45) #C13
\>>> key0.init()
\>>> key0.callback(f0)
\>>> key1 = KEY(1, 58) #D10
\>>> key1.init()
\>>> key1.callback(f1)
\>>> key2 = KEY(2, 57) #D9
\>>> key2.init()
\>>> key2.callback(f2)
\>>> key3 = KEY(3, 56) #D8
\>>> key3.init()
\>>> key3.callback(f3)
#### class device.LCD
LCD类是device模块下面的LCD类,例如在万耦开发板上的LCD显示屏,对应的型号是:st7789vw。
**常量**
| 屏幕状态 | |
| -------- | ------ |
| LCD.ON | 屏幕亮 |
| LCD.OFF | 屏幕灭 |
| 颜色 | |
| ----------- | ------ |
| LCD.WHITE | 白色 |
| LCD.BLACK | 黑色 |
| LCD.BLUE | 蓝色 |
| LCD.BRED | 黑红色 |
| LCD.GRED | 绿红色 |
| LCD.GBLUE | 绿蓝色 |
| LCD.RED | 红色 |
| LCD.MAGENTA | 紫红色 |
| LCD.GREEN | 绿色 |
| LCD.CYAN | 青色 |
| LCD.YELLOW | 黄色 |
| LCD.BROWN | 棕色 |
| LCD.BRRED | 棕红色 |
| LCD.GRAY | 灰色 |
| LCD.GRAY175 | 灰色175 |
| LCD.GRAY151 | 灰色151 |
| LCD.GRAY187 | 灰色187 |
| LCD.GRAY240 | 灰色240 |
**构造函数**
LCD对象的构造函数说明如下:
| 构造函数 | class device.LCD() |
| -------- | ----------------------- |
| 功能 | 构造一个LCD对象。 |
| 参数说明 | 无 |
| 返回值 | 返回创建的对应的LCD对象。 |
**实例方法**
device.LCD类包括如下实例方法:
| 方法名 | 说明 |
| ------------ | -------------------------------------- |
| LCD.init() | 初始化LCD对象。 |
| LCD.light() | 点亮或或者熄灭LCD。 |
| LCD.pixel() | 对屏幕固定的矩形区域进行指定颜色的填充。 |
| LCD.clear() | 清屏。 |
| LCD.color() | 对字体的前景色和背景色进行设置。 |
| LCD.text() | 在指定位置以指定大小显示字符串。 |
| LCD.fill() | 屏幕背景色填充。 |
| LCD.deinit() | 关闭LCD对象。 |
详细说明如下:
| 方法名称 | LCD.init() |
| -------- | ------------------------------------ |
| 功能 | 初始LCD,此函数可不调用。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
| 方法名称 | LCD.light([state]) |
| -------- | ------------------------------------------------------------ |
| 功能 | 点亮或者熄灭LCD或者获取屏幕的状态。 |
| 参数说明 | 1:LCD.ON或者LCD.OFF代表打开或者关闭LCD显示。
2:无参数代表获取屏幕的状态(此时调用必须在调用了light带参数之后方可真正获取到屏幕的状态)。 |
| 返回值 | 成功返回None或者屏幕的状态 失败触发ValueError异常。 |
| 方法名称 | LCD.pixel(x,y,w,h,color) |
| -------- | ------------------------------------------------------------ |
| 功能 | 对LCD的指定区域进行指定颜色的填充 |
| 参数说明 | x: 起始横坐标
y:起始纵坐标
w:宽度
h:高度
color:颜色 |
| 返回值 | 成功返回None 失败触发ValueError异常 |
| 方法名称 | LCD.clear() |
| -------- | ------------------------------------ |
| 功能 | 清屏,清除整个屏幕。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
| 方法名称 | LCD.color(fore_color,back_color) |
| -------- | ------------------------------------------------------------ |
| 功能 | 设置字体的前景色和背景色。 |
| 参数说明 | fore_color:前景色。
back_color:背景色,颜色参数参考颜色常量。 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
| 方法名称 | LCD.text(str,x,y,size) |
| -------- | ------------------------------------------------------------ |
| 功能 | 字符串显示 |
| 参数说明 | str:待显示字符串
x:起始横坐标
y:起始纵坐标
size:显示字体大小(驱动只支持16,24,32) |
| 返回值 | 成功返回None 失败触发ValueError异常 |
| 方法名称 | LCD.fill(color) |
| -------- | ------------------------------------ |
| 功能 | 屏幕背景色填充。 |
| 参数说明 | 参数参考颜色常量。 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
| 方法名称 | LCD.deinit() |
| -------- | ------------ |
| 功能 | 关闭LCD。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None。 |
**示例**
\>>>from device import LCD
\>>>lcd = LCD()
\>>>lcd.light(LCD.ON)
\>>>lcd.pixel(0,0, w= 20,h = 20, col = LCD.RED)
\>>>lcd.pixel(0,0, w= 20,h = 20) \#默认是蓝色BLUE
\>>>lcd.text("hello world", 60,60,16) \#参数 字符串,x,y,字体大小
\>>>lcd.text("hello world", 60,60,24)
\>>>lcd.text("hello world", 60,60,32)
\>>>lcd.light(LCD.ON)
\>>>lcd.light(LCD.OFF)
\>>>lcd.light()
\>>>lcd.light(LCD.ON)
\>>>lcd.fill(LCD.YELLOW)
\>>>lcd.clear()
\>>>lcd.color(LCD.RED,LCD.YELLOW)
\>>>lcd.text("hello world", 60,60,32)
\>>>lcd.deinit()
#### class device.LED
LED类是device模块下面的LED类,例如在万耦开发板上,对应上面3个颜色的led灯,led的pin脚号,请参考开发板引脚图。
**常量**
| led灯类型 | |
| --------- | --------- |
| LED.RED | 红色LED灯 |
| LED.BLUE | 蓝色LED灯 |
| LED.GREEN | 绿色LED灯 |
**构造函数**
LED对象的构造函数说明如下:
| 构造函数 | class device.LED (pin_num, led_kind) |
| -------- | ------------------------------------------------------------ |
| 功能 | 构造一个LED对象。 |
| 参数说明 | pin_num: pin的序号,可以通过machine.Pin.Index('X', y)得到。
led_kind是上述led灯类型中的一个。 |
| 返回值 | 返回创建的对应的颜色的led对象。 |
**实例方法**
device.LED类包括如下实例方法:
| 方法名 | 说明 |
| ------------ | ---------------------------------------- |
| LED.init() | 初始化LED对象。 |
| LED.open() | 打开对应的led,开发板中对应的颜色的led亮。 |
| LED.close() | 关闭对应的led, 开发板中对应的颜色的led灭。 |
| LED.deinit() | 关闭LED对象。 |
详细说明如下:
| 方法名称 | LED.init() |
| -------- | ------------------------------------ |
| 功能 | 初始led。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
| 方法名称 | LED.open() |
| -------- | ------------------------------------ |
| 功能 | 打开led灯。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
| 方法名称 | LED.close() |
| -------- | ------------------------------------ |
| 功能 | 关闭led灯。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
| 方法名称 | LED.deinit() |
| -------- | ------------------------------------ |
| 功能 | 关闭led对象。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
**示例**
\>>>from device import LED
\>>>led0 = LED(71, LED.RED)
\>>>led1 = LED(72, LED.GREEN)
\>>>led2 = LED(73, LED.BLUE)
\>>>led0.init()
\>>>led0.open()
\>>>led0.close()
\>>>led1.init()
\>>>led1.open()
\>>>led1.close()
\>>>led2.init()
\>>>led2.open()
\>>>led2.close()
#### class device.SIX_AXIS
SIX_AXIS类是device模块下面的SIX_AXIS类,例如万耦开发板上的六轴传感器,对应的型号是icm20602。
**常量**
| 采样类型 | |
| -------------- | ------------ |
| SIX_AXIS. GYRO | 三轴陀螺仪 |
| SIX_AXIS. ACCE | 三轴加速度计 |
**构造函数**
SIX_AXIS对象的构造函数说明如下:
| 构造函数 | class device.SIX_AXIS() |
| -------- | ------------------------------ |
| 功能 | 构造一个SIX_AXIS对象。 |
| 参数说明 | 无 |
| 返回值 | 返回创建的对应的六轴传感器对象。 |
**实例方法**
device. SIX_AXIS类包括如下实例方法:
| 方法名 | 说明 |
| ----------------- | ---------------------- |
| SIX_AXIS.init() | 初始化SIX_AXIS对象。 |
| SIX_AXIS.read() | 读取六轴传感器对象的值。 |
| SIX_AXIS.deinit() | 关闭SIX_AXIS传感器。 |
详细说明如下:
| 方法名称 | SIX_AXIS.init() |
| -------- | ------------------------------------ |
| 功能 | 初始化SIX_AXIS对象。 |
| 参数说明 | 无 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
| 方法名称 | SIX_AXIS.read([type]) |
| -------- | ------------------------------------------------------------ |
| 功能 | 获取SIX_AXIS的陀螺仪和加速度计的值或者只获取其中之一的值。 |
| 参数说明 | [type]:采样类型,参见前述“常量”,该参数为可选参数。 |
| 返回值 | 1:当无参数时返回值为陀螺仪和加速度计的字典组合值。
2:当参数为SIX_AXIS. GYRO获取的值是陀螺仪的字典值。
3:当参数SIX_AXIS. ACCE获取的值是加速度计的字典值。
4:失败触发ValueError异常。|
| 方法名称 | SIX_AXIS.deinit() |
| -------- | ------------------------------------ |
| 功能 | 关闭SIX_AXIS传感器。 |
| 参数说明 | 无参数 |
| 返回值 | 成功返回None 失败触发ValueError异常。 |
**示例**
\>>> from device import SIX_AXIS
\>>> axis = SIX_AXIS()
\>>> axis.init()
\>>> axis.read()
{'GYRO': {'Y': 600, 'X': 0, 'Z': 0}, 'ACCE': {'Y': 26, 'X': -26, 'Z': 1014}}
\>>> axis.read(SIX_AXIS.GYRO)
{'Y': 500, 'X': -200, 'Z': 0}
\>>> axis.read(SIX_AXIS.ACCE)
{'Y': 26, 'X': -29, 'Z': 1015}
\>>> axis.deinit()