from machine import Pin
keys = (("1", "2", "3", "A"),
("4", "5", "6", "B"),
("7", "8", "9", "C"),
("*", "0", "#", "D"))
rows = [18, 19, 20, 21]
swcols = [12, 13, 14, 15]
ledcols = [0, 1, 2, 3]
row_pins = [ Pin(pin_name, mode=Pin.OUT) for pin_name in rows ]
swcol_pins = [ Pin(pin_name, mode=Pin.IN, pull=Pin.PULL_UP) for pin_name in swcols ]
last_keys = set()
while True:
current_keys = set()
for current_row in range(len(row_pins)):
for row_number, row in enumerate(row_pins):
if current_row == row_number:
row.low()
else:
row.high()
for col_number, col in enumerate(swcol_pins):
if col.value() == 0:
current_keys.add(keys[current_row][col_number])
if len(current_keys - last_keys):
print("Pressed keys = ", current_keys - last_keys)
if len(last_keys - current_keys):
print("Released keys = ", last_keys - current_keys)
last_keys = current_keys