class KeyPad - 矩阵键盘
2024-07-08
该类提供矩阵键盘接口。
支持的平台:EC200U系列、EC600U系列、EC600M系列、EC800M/EG810M系列、EC600S系列、EC600N系列、EC800N系列、EG912N系列、EG915N系列、EC600K系列、EC800K系列、EG800K系列。
构造函数
machine.KeyPad
class machine.KeyPad(row,col)
参数描述:
row
- 行,int类型,大于0,不超过平台支持最大值。col
- 列,int类型,大于0,不超过平台支持最大值。
如果row和col均不设置,默认为4X4。
平台 | 最大行 | 最大列 |
---|---|---|
EC800N/EC600N | 4 | 4 |
EC600S | 5 | 5 |
EC200U | 6(EC200UXXAA系列只支持4行,见管脚说明) | 4 |
EC600U | 6 | 6 |
EC600M | 5 | 5 |
EC800M/EG810M | 5(EG810MEU只支持3行) | 5(EG810MEU只支持3行) |
EG912N | 3 | 3 |
EG915N | 4 | 4 |
EC600K | 3 | 3 |
EC800K/EG800K | 5(EG800K只支持4行) | 5(EG800K只支持4列) |
KeyPad引脚对应关系:
当不使用全部引脚时,接线按行列号从小到大顺序接线,比如EC600M使用2x2矩阵键盘时,硬件使用49、51和48、50引脚。
平台 | 引脚 |
---|---|
EC600M | 行号(输出)对应引脚如下: 行号0 – 引脚号49 行号1 – 引脚号51 行号2 – 引脚号53 行号3 – 引脚号55 行号4 – 引脚号56 列号(输入)对应引脚如下: 列号0 – 引脚号48 列号1 – 引脚号50 列号2 – 引脚号52 列号3 – 引脚号54 列号4 – 引脚号57 |
EC800M/EG810M | 行号(输出)对应引脚如下: 行号0 – 引脚号86(EG810MEU不支持) 行号1 – 引脚号76 行号2 – 引脚号85(EG810MEU不支持) 行号3 – 引脚号82 行号4 – 引脚号74 列号(输入)对应引脚如下: 列号0 – 引脚号87(EG810MEU不支持) 列号1 – 引脚号77 列号2 – 引脚号84(EG810MEU不支持) 列号3 – 引脚号83 列号4 – 引脚号75 |
EG912N | 行号(输出)对应引脚如下: 行号1 – 引脚号20 行号2 – 引脚号16 行号3 – 引脚号116 列号(输入)对应引脚如下: 列号2 – 引脚号105 列号3 – 引脚号21 列号4 – 引脚号1 |
EC200U | 行号(输出)对应引脚如下: 行号0 – 引脚号83 行号1 – 引脚号84 行号2 – 引脚号113 行号3 – 引脚号114 行号4 – 引脚号81(EC200UXXAA系列不支持) 行号5 – 引脚号82(EC200UXXAA系列不支持) 列号(输入)对应引脚如下: 列号0 – 引脚号115 列号1 – 引脚号78 列号2 – 引脚号79 列号3 – 引脚号80 |
EC600U | 行号(输出)对应引脚如下: 行号0 – 引脚号105 行号1 – 引脚号106 行号2 – 引脚号107 行号3 – 引脚号108 行号4 – 引脚号104 行号5 – 引脚号103 列号(输入)对应引脚如下: 列号0 – 引脚号55 列号1 – 引脚号129 列号2 – 引脚号128 列号3 – 引脚号127 列号4 – 引脚号126 列号5 – 引脚号125 |
EG915N | 行号(输出)对应引脚如下: 行号0 – 引脚号39 行号1 – 引脚号20 行号2 – 引脚号27 行号3 – 引脚号26 列号(输入)对应引脚如下: 列号0 – 引脚号83 列号2 – 引脚号28 列号3 – 引脚号25 列号4 – 引脚号1 |
EC600K | 行号(输出)对应引脚如下: 行号0 – 引脚号53 行号1 – 引脚号49 行号2 – 引脚号55 列号(输入)对应引脚如下: 列号0 – 引脚号52 列号1 – 引脚号54 列号2 – 引脚号50 |
EC800K/EG800K | 行号(输出)对应引脚如下: 行号0 – 引脚号74 行号1 – 引脚号76 行号2 – 引脚号86 行号3 – 引脚号82 行号4 – 引脚号29(EG800K不支持) 列号(输入)对应引脚如下: 列号0 – 引脚号75 列号1 – 引脚号77 列号2 – 引脚号87 列号3 – 引脚号81 列号4 – 引脚号28(EG800K不支持) |
示例:
>>> # 创建keypad对象
>>> import machine
>>> keypad=machine.KeyPad(2,3) # 设置为2行3列矩阵键盘
>>> keypad=machine.KeyPad() # 参数缺省,默认设置为4行4列矩阵键盘
>>> keypad=machine.KeyPad(2) # 行值设置为2,列值缺省,列值默认为4,初始化为2行4列矩阵键盘
方法
keypad.init
keypad.init()
该方法用于初始化keypad设置。
返回值描述:
设置成功返回整型值0
,设置失败返回整型值-1
。
keypad.set_callback
keypad.set_callback(usrFun)
该方法用于设置回调函数,外接按键接入模组后,当外接键盘按键按放时会触发此回调函数。
参数描述:
usrFun
- 矩阵键盘回调函数,回调函数原型:usrFun(result_list)
回调函数参数描述:
result_list[0]
:按键状态(1表示按下,0表示抬起)result_list[1]
:行号result_list[2]
:列号
以EC600M为例,假设按键连接的管脚为49,52脚,按下后产生的回调的参数为[1,0,2],松开后产生的回调的参数为[0,0,2]。
返回值描述:
设置成功返回整型值0
,设置失败返回整型值-1
。
keypad.deinit
keypad.deinit()
该方法用于解除初始化,释放初始化的资源和回调函数设置。
返回值描述:
设置成功返回整型值0
,设置失败返回整型值-1
。
使用示例:
import machine
import utime
is_loop = 1
keypad=machine.KeyPad()
keypad.init()
def userfun(l_list):
global is_loop
if l_list[0] != 1 :
is_loop = 0
print('will exit')
print(l_list)
keypad.set_callback(userfun)
loop_num = 0
while is_loop == 1 and loop_num < 10:
utime.sleep(5)
loop_num = loop_num +1
print(" running..... ",is_loop,loop_num)
keypad.deinit()
print('exit!')