# Skenuje stisknuté klávesy na membránové klávesnici
from machine import Pin
from utime import sleep
# Mapa kláves – řádky a sloupce
matrix_keys = [
['1', '2', '3', 'A'],
['4', '5', '6', 'B'],
['7', '8', '9', 'C'],
['*', '0', '#', 'D']
]
# Čísla GPIO podle zapojení řádků a sloupců
keypad_rows = [13, 12, 11, 10]
keypad_cols = [9, 8, 7, 6]
row_piny = [] # seznam řádkových pinů
col_piny = [] # seznam sloupcových pinů
# Inicializace pinů: řádky jako výstup, sloupce jako vstup s pull-down odporem
for x in range(4):
row_piny.append(Pin(keypad_rows[x], Pin.OUT))
row_piny[x].value(0) # výchozí stav LOW
col_piny.append(Pin(keypad_cols[x], Pin.IN, Pin.PULL_DOWN))
def scankeys():
"""
Prochází všechny řádky a sloupce a zjišťuje, která klávesa byla stisknuta.
Pro každý řádek nastaví pouze ten řádek na HIGH a zkontroluje sloupce.
"""
for row in range(4):
# Nastavíme všechny řádky na LOW
for r in range(4):
row_piny[r].value(0)
# Nastavíme aktuální řádek na HIGH
row_piny[row].value(1)
# Projdeme všechny sloupce
for col in range(4):
if col_piny[col].value() == 1:
key_stisknuta = matrix_keys[row][col]
print(f'Stiskl jsi {key_stisknuta}')
sleep(0.1) # krátká prodleva pro stabilitu
print('Stiskni klávesu: ')
while True:
scankeys()