from machine import Pin, Timer
#本实验需要用到通灯模块中的发光二极管,
#即红、黄、绿各1个。依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。
#其人行道交通灯的燃灭规律为:初始态人行道绿灯亮,允许行人通行;
#10s后绿灯熄灭,黄灯亮起,行人等待;3s后黄等熄灭,红灯亮起,静止行人通行。
#15s后,红灯熄灭,人行道绿灯再次亮起,恢复允许通行状态,随后重复上述循环过程。
# 定义LED引脚
green_led = Pin(14, Pin.OUT)
yellow_led = Pin(33, Pin.OUT)
red_led = Pin(32, Pin.OUT)
green_led.value(1) # 绿灯亮
yellow_led.value(0) # 黄灯灭
red_led.value(0) # 红灯灭
timer = Timer(0)
state = 0 # 0: 绿灯,1: 黄灯,2: 红灯
# 定时器回调函数
def timer_callback(t):
global state
if state == 0: # 绿灯状态
green_led.value(0)
yellow_led.value(1)
state = 1 # 切换到黄灯状态
timer.init(period=3000, mode=Timer.ONE_SHOT, callback=timer_callback) # 3秒后切换
elif state == 1: # 黄灯状态
yellow_led.value(0)
red_led.value(1)
state = 2 # 切换到红灯状态
timer.init(period=15000, mode=Timer.ONE_SHOT, callback=timer_callback) # 15秒后切换
elif state == 2: # 红灯状态
red_led.value(0)
green_led.value(1)
state = 0 # 切换回绿灯状态
timer.init(period=10000, mode=Timer.ONE_SHOT, callback=timer_callback) # 10秒后切换
# 启动定时器
timer.init(period=10000, mode=Timer.ONE_SHOT, callback=timer_callback)
print("人行道信号灯程序已启动,绿灯亮,允许行人通行。")