from machine import Pin
import time
# Pin definitions
segments = [Pin(i, Pin.OUT) for i in (0, 1, 2, 3, 4, 5, 6, 7)] # a, b, c, d, e, f, g, dp
digits = [Pin(i, Pin.OUT) for i in (8, 9)] # digit 1, digit 2
# 7-segment digit patterns for 0-9
num = [
[1, 1, 1, 1, 1, 1, 0], # 0
[0, 1, 1, 0, 0, 0, 0], # 1
[1, 1, 0, 1, 1, 0, 1], # 2
[1, 1, 1, 1, 0, 0, 1], # 3
[0, 1, 1, 0, 0, 1, 1], # 4
[1, 0, 1, 1, 0, 1, 1], # 5
[1, 0, 1, 1, 1, 1, 1], # 6
[1, 1, 1, 0, 0, 0, 0], # 7
[1, 1, 1, 1, 1, 1, 1], # 8
[1, 1, 1, 1, 0, 1, 1], # 9
]
def display(number):
number_str = "{:02d}".format(number) # Convert number to 2-digit string
for digit in range(2):
for i in range(7):
segments[i].value(num[int(number_str[digit])][i])
digits[digit].value(0)
time.sleep(0.005)
digits[digit].value(1)
try:
for n in range(20, -1, -1):
for _ in range(200): # Display the number for a short time
display(n)
time.sleep(0.005) # Wait for 1 second between counts
except KeyboardInterrupt:
print("Program stopped")
finally:
for segment in segments:
segment.value(0)
for digit in digits:
digit.value(1)