from machine import Pin
from utime import sleep
# 创建南北方向红绿黄灯
nRed = Pin(27, Pin.OUT)
nGreen = Pin(26, Pin.OUT)
nYellow = Pin(25, Pin.OUT)
# 创建东西方向红绿黄灯
wRed = Pin(14, Pin.OUT)
wGreen = Pin(12, Pin.OUT)
wYellow = Pin(13, Pin.OUT)
# 创建数码管led列表
a = Pin(21, Pin.OUT)
b = Pin(22, Pin.OUT)
c = Pin(2, Pin.OUT)
d = Pin(4, Pin.OUT)
e = Pin(5, Pin.OUT)
f = Pin(18, Pin.OUT)
g = Pin(19, Pin.OUT)
dp = Pin(15, Pin.OUT)
numLedList = [a, b, c, d, e, f, g, dp]
# 数码管对应数字编码
numberDict = {
0: "11111100",
1: "01100000",
2: "11011010",
3: "11110010",
4: "01100110",
5: "10110110",
6: "10111110",
7: "11100000",
8: "11111110",
9: "11110110",
}
def showNumber(number):
if number in numberDict:
code = numberDict[number]
for i in range(8): # 遍历8个段(a-g和dp)
if code[i] == "1":
numLedList[i].value(1) # 点亮段
else:
numLedList[i].value(0) # 熄灭段
while True:
# 南北红灯亮,东西绿灯亮,9秒倒计时
nRed.on()
wGreen.on()
for count in range(9, 0, -1):
showNumber(count)
sleep(1)
wGreen.off()
# 东西黄灯闪烁,3秒倒计时(显示3-1)
for i in range(3,0,-1):
showNumber(3 - i)
wYellow.on()
sleep(1)
wYellow.off()
showNumber(0) # 灭灯时显示0(可选)
sleep(1)
nRed.off()
# 南北绿灯亮,东西红灯亮,9秒倒计时
nGreen.on()
wRed.on()
for count in range(9, 0, -1):
showNumber(count)
sleep(1)
nGreen.off()
# 南北黄灯闪烁,3秒倒计时(显示3-1)
for i in range(3,0,-1):
showNumber(3 - i)
nYellow.on()
sleep(1)
nYellow.off()
showNumber(0)
sleep(1)
wRed.off()