from machine import Pin
import time
keys = [
['1','2','3','A'],
['4','5','6','B'],
['7','8','9','C'],
['*','0','#','D']
]
row_pins = [32, 33, 25, 26]
col_pins = [27, 14, 12, 13]
rows = [Pin(pin, Pin.OUT) for pin in row_pins]
cols = [Pin(pin, Pin.IN, Pin.PULL_DOWN) for pin in col_pins]
AUTHORIZED_CARDS = ["1234", "5555", "9876"]
entered_id = ""
adding_user = False # Mode flag
new_user = ""
ADMIN_PIN = "9999" # Secret code to enter Add-User mode
print("Place RFID / Enter Code")
def get_key():
for r in range(4):
rows[r].value(1)
for c in range(4):
if cols[c].value():
rows[r].value(0)
return keys[r][c]
rows[r].value(0)
return None
while True:
key = get_key()
if key:
print("Key Pressed:", key)
if not adding_user:
if key == '#':
if entered_id in AUTHORIZED_CARDS:
print("✅ Access Granted")
elif entered_id == ADMIN_PIN:
print("🔐 ADMIN MODE — Enter New Card Number then press #")
adding_user = True
else:
print("❌ Access Denied")
entered_id = ""
elif key == '*':
entered_id = ""
print("Cleared")
else:
entered_id += key
print("Current:", entered_id)
else:
if key == '#':
if new_user != "":
AUTHORIZED_CARDS.append(new_user)
print("👤 New User Added:", new_user)
print("Current Users:", AUTHORIZED_CARDS)
new_user = ""
adding_user = False
elif key == '*':
new_user = ""
print("Cancelled — Back to Normal Mode")
else:
new_user += key
print("New ID:", new_user)
time.sleep(0.3)