from machine import Pin, ADC
import time
# تعريف دبابيس الشاشة السباعية
SEGMENT_PINS = [Pin(i, Pin.OUT) for i in range(6, 13)] # A - G (من 6 إلى 12)
# مراجع الأرقام التي سيتم عرضها على الشاشة السباعية
SEGMENT_MAP = {
0: [1, 1, 1, 1, 1, 1, 0], # 0
1: [0, 1, 1, 0, 0, 0, 0], # 1
2: [1, 1, 0, 1, 1, 0, 1], # 2
3: [1, 1, 1, 1, 0, 0, 1], # 3
4: [0, 1, 1, 0, 0, 1, 1], # 4
5: [1, 0, 1, 1, 0, 1, 1], # 5
6: [1, 0, 1, 1, 1, 1, 1], # 6
7: [1, 1, 1, 0, 0, 0, 0], # 7
8: [1, 1, 1, 1, 1, 1, 1], # 8
9: [1, 1, 1, 1, 0, 1, 1] # 9
}
# دالة لعرض رقم على الشاشة السباعية
def display_number(number):
# تحويل الرقم إلى مصفوفة من الأرقام المناسبة لكل شاشة
segments = SEGMENT_MAP[number]
for i in range(7):
SEGMENT_PINS[i].value(segments[i])
# إعداد دبابيس القراءة التناظرية
potentiometer = ADC(Pin(26)) # قراءة البوتينشومتر على الدبوس 26
button = Pin(15, Pin.IN, Pin.PULL_UP) # زر لتفعيل القياس
# دالة للتحديث الدوري للشاشة
def refresh_display():
if button.value() == 0: # عندما يتم الضغط على الزر
pot_value = potentiometer.read_u16() # قراءة القيمة التناظرية
# تحويل القيمة إلى رقم مناسب لعرضه على الشاشة
display_number(pot_value // 6554) # القيمة المقروءة هي من 0 إلى 65535، لذا قسمناها على 6554 لعرض قيم من 0 إلى 9
# تنفيذ التحديثات بشكل دوري
while True:
refresh_display()
time.sleep(0.1) # تأخير بسيط لعدم الاستخدام المفرط للمتحكم