import time
import board
import digitalio
# 1. Define the pins connected to segments a through g
segments = {
'a': digitalio.DigitalInOut(board.GP5),
'b': digitalio.DigitalInOut(board.GP6),
'c': digitalio.DigitalInOut(board.GP7),
'd': digitalio.DigitalInOut(board.GP15),
'e': digitalio.DigitalInOut(board.GP16),
'f': digitalio.DigitalInOut(board.GP17),
'g': digitalio.DigitalInOut(board.GP18),
}
# 2. Set all pins as OUTPUT
for seg in segments.values():
seg.direction = digitalio.Direction.OUTPUT
# 3. Digit patterns for COMMON CATHODE
# (1 = ON, 0 = OFF)
# Order: (a, b, c, d, e, f, g)
digits = {
0: (1, 1, 1, 1, 1, 1, 0),
1: (0, 1, 1, 0, 0, 0, 0),
2: (1, 1, 0, 1, 1, 0, 1),
3: (1, 1, 1, 1, 0, 0, 1),
4: (0, 1, 1, 0, 0, 1, 1),
5: (1, 0, 1, 1, 0, 1, 1),
6: (1, 0, 1, 1, 1, 1, 1),
7: (1, 1, 1, 0, 0, 0, 0),
8: (1, 1, 1, 1, 1, 1, 1),
9: (1, 1, 1, 1, 0, 1, 1),
}
segment_keys = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
# 4. Function to update the display
def display_digit(num):
pattern = digits[num]
for i, seg in enumerate(segment_keys):
# Sending the 1 or 0 from the dictionary to the pin
segments[seg].value = pattern[i]
# 5. Main loop for the countdown (9 down to 0)
while True:
for i in range(9, -1, -1):
print("Counting down:", i)
display_digit(i)
time.sleep(1)