import time
from machine import Timer, Pin
time.sleep(0.1)
seven_segment = [Pin(i, Pin.OUT) for i in range(7)]
seven_segment_dp = Pin(7, Pin.OUT)
seven_segment_digit = [Pin(i, Pin.OUT) for i in range(8, 12)]
seven_segment_vals = [
0xC0,
0xF9,
0xA4,
0xB0,
0x99,
0x92,
0x82,
0xF8,
0x80,
0x90,
]
display_value = 1234
seven_segment_scanning_timer = Timer()
def display_digit(number, digit_idx, dp_enable):
for i in range(7):
seven_segment[i].value((seven_segment_vals[number] >> i) & 0x01)
seven_segment_dp.value(0 if dp_enable else 1)
seven_segment_digit[digit_idx].value(1)
time.sleep(0.005)
seven_segment_digit[digit_idx].value(0)
def scan_seven_segment_display(timer_int):
global display_value
value = display_value
for i in range(4):
digit = value % 10
dp_enable = (i == 3)
display_digit(digit, i, dp_enable)
value = value // 10
def enable_display_timer():
global seven_segment_scanning_timer
seven_segment_scanning_timer.init(mode=Timer.PERIODIC, period=4, callback=scan_seven_segment_display)
def setup():
enable_display_timer()
if __name__ == '__main__':
setup()
while True:
time.sleep(0.2)