#
#
#
from machine import Pin
from utime import sleep, sleep_ms
# 数码管的7个引脚连接到GPIO上
pins = [
    Pin(3, Pin.OUT),  # A
    Pin(7, Pin.OUT),  # B
    Pin(20, Pin.OUT),  # C
    Pin(21, Pin.OUT),  # D
    Pin(22, Pin.OUT),  # E
    Pin(4, Pin.OUT),  # F
    Pin(19, Pin.OUT)   # G
]
numbers = [
   #[A,B,C,D,E,F,G]
    [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,1,1,0,0]  #9
]
# 数码管位选连接的GPIO口
DIGS = [
    Pin(2, Pin.OUT), # dig1
    Pin(5, Pin.OUT), # dig2
    Pin(6, Pin.OUT), # dig3
    Pin(18, Pin.OUT) # dig4
]
def close_led():
    for pin in pins:
        display_number([1,1,1,1,1,1,1])
# def get_num_len(number):
#     ret = 0
#     while number != 0:
#         ret = ret + 1
#         number = number // 10
#     return ret
# def get_digit_of_index(number, i):
#     """
#     这里的i从右往左
#     """
#     num = number // (10 ** (i - 1))
#     if num > 9:
#         return num % 10
#     return num
def display_segments(segments):
    """
    点亮一个数码管的所有段
    """
    for i in range(len(segments)):
        pins[i].value(segments[i])
def display_a_digit(digit, index):
    #位选
    for i in range(len(DIGS)):
        if i == index - 1:
            DIGS[index - 1].value(1)
        else:
            DIGS[i].value(0)
    
    #数字的段码
    number_info = numbers[digit]
    display_segments(number_info)
# def display_a_number(number):
#     """
#     显示一个数字
#     """
#     #这个数字的位数,用来判断占用几位数码管
#     length = get_num_len(number))
#     if length > 4:
#         #超过4位数的不支持
#         return
#     for i in range(length, 0, -1):
#         digit = get_digit_at_index(number, i)
#         display_digit(digit, i)
def deselection():
    for i in range(len(DIGS)):
        DIGS[i].value(0)
def close_all():
    for i in range(len(DIGS)):
        DIGS[i].value(1)
        close_led()
while True:
    # close_all()
    deselection()
    DIGS[0].value(1)
    display_segments(numbers[1])
    DIGS[0].value(0)
    sleep_ms(20)
    # close_all()
    deselection()
    DIGS[2].value(1)
    display_segments(numbers[2])
    DIGS[2].value(0)
    sleep_ms(20)
# close_led()
# print(f"error")
# while True:
#     display_a_digit(6, 1)
#     sleep(0.01)
#     display_a_digit(5, 2)
    
# display_a_digit(4, 3)
# display_a_digit(3, 4)
# DIGS[3].value(1)
# display_number(numbers[1])
# display_number(1234)
# while True:
#     for i in range(100, 9999):
#         print(1)
while True:
#     for i in range(len(numbers)):
#         number_info = numbers[i]
#         close_led()
#         display_number(number_info)
    sleep(1)
    print("error")