from machine import Pin
import time
# تعاریف پینهای سگمنت
segment_pins = [Pin(i, Pin.OUT) for i in range(7)] # GPIO 0 تا 6 برای A تا G
# پینهای کلیدها
button_increase = Pin(15, Pin.IN, Pin.PULL_UP) # کلید افزایش
button_decrease = Pin(16, Pin.IN, Pin.PULL_UP) # کلید کاهش
# تعریف اعداد ۰ تا ۹ برای سون سگمنت **آند مشترک**
digits = [
[0, 0, 0, 0, 0, 0, 1], # 0
[1, 0, 0, 1, 1, 1, 1], # 1
[0, 0, 1, 0, 0, 1, 0], # 2
[0, 0, 0, 0, 1, 1, 0], # 3
[1, 0, 0, 1, 1, 0, 0], # 4
[0, 1, 0, 0, 1, 0, 0], # 5
[0, 1, 0, 0, 0, 0, 0], # 6
[0, 0, 0, 1, 1, 1, 1], # 7
[0, 0, 0, 0, 0, 0, 0], # 8
[0, 0, 0, 0, 1, 0, 0], # 9
]
# شمارنده
counter = 0
# تابع برای نمایش عدد
def display_digit(digit):
for i in range(7):
segment_pins[i].value(digits[digit][i])
# حلقه اصلی
while True:
if button_increase.value() == 0: # اگر کلید افزایش فشرده است
time.sleep(0.1) # جلوگیری از نوسانات کلید
counter += 1 # شمارنده را یک واحد افزایش بده
if counter > 9:
counter = 0 # اگر از 9 بیشتر شد، به صفر بازگشت کند
display_digit(counter) # نمایش شمارنده روی سون سگمنت
elif button_decrease.value() == 0: # اگر کلید کاهش فشرده است
time.sleep(0.1) # جلوگیری از نوسانات کلید
counter -= 1 # شمارنده را یک واحد کاهش بده
if counter < 0:
counter = 9 # اگر کمتر از 0 شد، به 9 بازگشت کند
display_digit(counter) # نمایش شمارنده روی سون سگمنت
time.sleep(0.1) # تاخیر کوتاه برای جلوگیری از نوسانات کلید