from machine import Pin
from time import sleep
# Configuración de pines para filas y columnas (Ajusta según tu cableado)
filas_pines = [35, 32, 33, 25]
columnas_pines = [26, 27, 14, 12]
# Mapa de teclas del teclado 4x4
matriz_teclas = [
['1', '2', '3', 'A'],
['4', '5', '6', 'B'],
['7', '8', '9', 'C'],
['*', '0', '#', 'D']
]
# Inicializar filas como salidas
filas = [Pin(pin, Pin.OUT) for pin in filas_pines]
# Inicializar columnas como entradas con resistencia pull-up interna
columnas = [Pin(pin, Pin.IN, Pin.PULL_UP) for pin in columnas_pines]
def escanear_teclado():
for f_idx, fila in enumerate(filas):
fila.value(0) # Poner la fila en nivel bajo (LOW)
for c_idx, columna in enumerate(columnas):
if columna.value() == 0: # Si la columna detecta LOW, hay contacto
tecla = matriz_teclas[f_idx][c_idx]
while columna.value() == 0:
pass # Esperar a que se suelte la tecla (antirrebote básico)
fila.value(1)
return tecla
fila.value(1) # Volver la fila a HIGH
return None
# Bucle principal
print("Presiona cualquier tecla...")
while True:
tecla_pulsada = escanear_teclado()
if tecla_pulsada:
print("Tecla presionada:", tecla_pulsada)
sleep(0.1)