from machine import Pin
from time import sleep_ms
# 红绿灯引脚初始化(高电平亮)
led_pins = [12,14,27]
for pin in led_pins:
Pin(pin, Pin.OUT, value=0)
# 7段共阳数码管引脚(a-g分别对应2,4,5,18,19,23,22,高电平灭)
seg_pins = [2,4,5,18,19,23,22]
for pin in seg_pins:
Pin(pin, Pin.OUT, value=1)
# 共阳数码管段码表(0=亮,1=灭;索引0-9对应数字0-9)
num_code = [
[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
]
# 显示数字(处理9→显示0,避免索引越界)
def show_num(n):
# 单数码管仅显示0-9
for i in range(7):
Pin(seg_pins[i]).value(num_code[n][i])
# 红绿灯循环
while True:
# 绿灯10秒(剩余3秒闪烁)
Pin(led_pins[2]).value(1)
for t in range(9, -1, -1):
show_num(t)
if t <= 3:
Pin(led_pins[2]).value(1)
sleep_ms(500)
Pin(led_pins[2]).value(0)
sleep_ms(500)
else:
sleep_ms(1000)
Pin(led_pins[2]).value(0)
# 黄灯5秒(剩余3秒闪烁)
Pin(led_pins[1]).value(1)
for t in range(4, -1, -1):
show_num(t)
if t <= 3:
Pin(led_pins[1]).value(1)
sleep_ms(500)
Pin(led_pins[1]).value(0)
sleep_ms(500)
else:
sleep_ms(1000)
Pin(led_pins[1]).value(0)
# 红灯灯10秒(剩余3秒闪烁)
Pin(led_pins[0]).value(1)
for t in range(9, -1, -1):
show_num(t)
if t <= 3:
Pin(led_pins[0]).value(1)
sleep_ms(500)
Pin(led_pins[0]).value(0)
sleep_ms(500)
else:
sleep_ms(1000)
Pin(led_pins[0]).value(0)