from machine import ADC, Pin
import time
# הגדרת כניסת ADC
adc = ADC(Pin(36)) # GPIO36 = VP
adc.atten(ADC.ATTN_11DB) # מאפשר טווח קריאה 0-3.3V
adc.width(ADC.WIDTH_12BIT) # רזולוציה של 0-4095
# מפת ערכים אנלוגיים לכל מקש (לפי מחלקי המתח)
# הערכים כאן הם לדוגמה – תצטרך לכייל לפי המדידות שלך בפועל
key_values = {
350: "1", 700: "2", 1050: "3", 1400: "A",
700: "4", 1050: "5", 1400: "6", 1750: "B",
1050: "7", 1400: "8", 1750: "9", 2100: "C",
1400: "*", 1750: "0", 2100: "#", 2450: "D"
}
# טווח טולרנס לקריאה אנלוגית (סטייה מותרת)
TOLERANCE = 100
def read_key():
value = adc.read()
print(f"ADC Value: {value}")
for ref_val, key in key_values.items():
if abs(value - ref_val) <= TOLERANCE:
return key
return None
# לולאת קריאה
last_key = None
while True:
key = read_key()
if key and key != last_key:
print("Key Pressed:", key)
last_key = key
elif not key:
last_key = None
time.sleep(0.1)