class KeyPad - 矩阵键盘

该类提供矩阵键盘接口。

支持的平台: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!')