KeyPad - Matrix Keyboard
This class provides the matrix keyboard interface.
Constructor
machine.KeyPad
class machine.KeyPad(row,col)
Parameter:
-
row
- Integer type. Row number. It shall be greater than 0 and cannot exceed the maximum value supported by the module. -
col
- Integer type. Column number. It shall be greater than 0. The value cannot exceed the maximum value supported by the module.
If you do not set the row and column value, the default value is 4X4.
Maximum Row | Maximum Column |
---|---|
4 | 4 |
Maximum Row | Maximum Column |
---|---|
6(series only suprrort 4 Row,see Pin Correspondences) | 4 |
Maximum Row | Maximum Column |
---|---|
6 | 6 |
Maximum Row | Maximum Column |
---|---|
5 | 5 |
Maximum Row | Maximum Column |
---|---|
5 | 5 |
Maximum Row | Maximum Column |
---|---|
5(EG810MEU series only suprrort 3 Row,see Pin Correspondences) | 5(EG810MEU series only suprrort 3 Row,see Pin Correspondences) |
Maximum Row | Maximum Column |
---|---|
3 | 3 |
Maximum Row | Maximum Column |
---|---|
4 | 4 |
Maximum Row | Maximum Column |
---|---|
3 | 3 |
Maximum Row | Maximum Column |
---|---|
5 | 5 |
Maximum Row | Maximum Column |
---|---|
4 | 4 |
KeyPad Pin Correspondences:
When part of pins are used, you shall connect the keyboard and the pin according to row and column numbers in ascending order. For example, for EC600M, when a 2x2 matrix keyboard is used, the hardware will use 49, 51 and 48, 50 pins.
Row number | Row PIN | Column number | Column PIN |
---|---|---|---|
Row number0 | pin49 | Column number0 | pin48 |
Row number1 | pin51 | Column number1 | pin50 |
Row number2 | pin53 | Column number2 | pin52 |
Row number3 | pin55 | Column number3 | pin54 |
Row number4 | pin56 | Column number4 | pin57 |
Row number | Row PIN | Column number | Column PIN |
---|---|---|---|
Row number0 | pin86 | Column number0 | pin87 |
Row number1 | pin76 | Column number1 | pin77 |
Row number2 | pin85 | Column number2 | pin84 |
Row number3 | pin82 | Column number3 | pin83 |
Row number4 | pin74 | Column number4 | pin75 |
Row number | Row PIN | Column number | Column PIN |
---|---|---|---|
Row number0 | pin86(EG810MEU series not support) | Column number0 | pin87(EG810MEU series not support) |
Row number1 | pin76 | Column number1 | pin77 |
Row number2 | pin85(EG810MEU series not support) | Column number2 | pin84(EG810MEU series not support) |
Row number3 | pin82 | Column number3 | pin83 |
Row number4 | pin74 | Column number4 | pin75 |
Row number | Row PIN | Column number | Column PIN |
---|---|---|---|
Row number1 | pin20 | Column number2 | pin105 |
Row number2 | pin16 | Column number3 | pin21 |
Row number3 | pin116 | Column number4 | pin1 |
Row number | Row PIN | Column number | Column PIN |
---|---|---|---|
Row number0 | pin83 | Column number0 | pin115 |
Row number1 | pin84 | Column number1 | pin78 |
Row number2 | pin113 | Column number2 | pin79 |
Row number3 | pin114 | Column number3 | pin80 |
Row number4 | pin81(EC200UXXAA series not support) | Column number4 | / |
Row number5 | pin82(EC200UXXAA series not support) | Column number5 | / |
Row number | Row PIN | Column number | Column PIN |
---|---|---|---|
Row number0 | pin105 | Column number0 | pin55 |
Row number1 | pin106 | Column number1 | pin129 |
Row number2 | pin107 | Column number2 | pin128 |
Row number3 | pin108 | Column number3 | pin127 |
Row number4 | pin104 | Column number4 | pin126 |
Row number5 | pin103 | Column number5 | pin125 |
Row number | Row PIN | Column number | Column PIN |
---|---|---|---|
Row number0 | pin39 | Column number0 | pin83 |
Row number1 | pin20 | Column number2 | pin28 |
Row number2 | pin27 | Column number3 | pin25 |
Row number3 | pin26 | Column number4 | pin1 |
Row number | Row PIN | Column number | Column PIN |
---|---|---|---|
Row number0 | pin53 | Column number0 | pin52 |
Row number1 | pin49 | Column number1 | pin54 |
Row number2 | pin55 | Column number2 | pin50 |
Row number | Row PIN | Column number | Column PIN |
---|---|---|---|
Row number0 | pin74 | Column number0 | pin75 |
Row number1 | pin76 | Column number1 | pin77 |
Row number2 | pin86 | Column number2 | pin87 |
Row number3 | pin82 | Column number3 | pin81 |
Row number4 | pin29 | Column number4 | pin28 |
Row number | Row PIN | Column number | Column PIN |
---|---|---|---|
Row number0 | pin74 | Column number0 | pin75 |
Row number1 | pin76 | Column number1 | pin77 |
Row number2 | pin86 | Column number2 | pin87 |
Row number3 | pin82 | Column number3 | pin81 |
Row number4 | pin29(EG800K series not support) | Column number4 | pin28(EG800K series not support) |
Example:
>>> # Creates a keypad object
>>> import machine
>>> keypad=machine.KeyPad(2,3) # Sets a matrix keyboard with 2 rows and 3 columes
>>> keypad=machine.KeyPad() # Default parameter. The default setting is a matrix keyboard with 4 rows and 4 columns
>>> keypad=machine.KeyPad(2) # Sets the row value to 2. Default column Value. The default column value is 4. A matrix keyboard with 2 rows and 4 columes is initialized.
Methods
keypad.init
keypad.init()
This method initializes keypad settings.
Return Value:
0
- Successful execution
-1
- Failed execution
keypad.set_callback
keypad.set_callback(usrFun)
This method sets callback function. After the external keyboard button is connected to the module, this callback function will be triggered when the external keyboard button is pressed and released.
Parameter:
-
usrFun
- Matrix keyboard callback function. Prototype:usrFun(result_list)
Parameter of callback function:
-
result_list[0]
: Key status (1 indicates the button is pressed and 0 indicates the button is released). -
result_list[1]
: Row number -
result_list[2]
: Column number
-
for example,the EC600M module, suppose the key connect pin 49 and pin 52,if press the key, the parameter of callback is [1,0,2],if release the key, the parameter of callback is [0,0,2].
Return Value:
0
- Successful execution
-1
- Failed execution
keypad.deinit
keypad.deinit()
This method deinitializes to release initialized resources and callback function settings.
Return Value:
0
- Successful execution
-1
- Failed execution
Example:
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!')