制作红绿灯可以根据需求选择不同的方法,以下是几种常见场景的实现方案,包括硬件制作和编程模拟:
一、实物红绿灯模型(硬件制作)
材料准备:
- Arduino 开发板(如 Arduino UNO)
- 面包板 + 杜邦线
- LED(红、黄、绿各1个)
- 220Ω 电阻 ×3
- USB 数据线(供电和上传代码)
电路连接:
- 将红色LED长脚(正极)接Arduino数字引脚13,短脚(负极)接GND。
- 黄色LED接引脚12,绿色接引脚11(均串联220Ω电阻)。
- 确保所有LED负极通过电阻连接到GND。
Arduino 代码示例:
void setup() {
pinMode(13, OUTPUT); // 红灯
pinMode(12, OUTPUT); // 黄灯
pinMode(11, OUTPUT); // 绿灯
}
void loop() {
// 红灯亮10秒
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
delay(10000);
// 绿灯亮10秒
digitalWrite(13, LOW);
digitalWrite(11, HIGH);
delay(10000);
// 绿灯闪烁3次后黄灯亮3秒
digitalWrite(11, LOW);
for (int i=0; i<3; i++) {
digitalWrite(11, HIGH);
delay(500);
digitalWrite(11, LOW);
delay(500);
}
digitalWrite(12, HIGH);
delay(3000);
}
效果:
- 红灯10秒 → 绿灯10秒 → 绿灯闪烁3秒 → 黄灯3秒 → 循环。
二、编程模拟红绿灯(Python版)
使用 tkinter
库创建图形界面模拟红绿灯。
代码示例:
import tkinter as tk
import time
def change_light():
while True:
# 红灯亮
canvas.itemconfig(red, fill="red")
canvas.itemconfig(yellow, fill="gray")
canvas.itemconfig(green, fill="gray")
time.sleep(5)
# 绿灯亮
canvas.itemconfig(red, fill="gray")
canvas.itemconfig(green, fill="green")
time.sleep(5)
# 黄灯亮
canvas.itemconfig(green, fill="gray")
canvas.itemconfig(yellow, fill="yellow")
time.sleep(2)
root = tk.Tk()
root.title("红绿灯模拟")
canvas = tk.Canvas(root, width=100, height=300)
canvas.pack()
# 绘制红绿灯
red = canvas.create_oval(25, 50, 75, 100, fill="gray")
yellow = canvas.create_oval(25, 125, 75, 175, fill="gray")
green = canvas.create_oval(25, 200, 75, 250, fill="gray")
import threading
thread = threading.Thread(target=change_light)
thread.daemon = True
thread.start()
root.mainloop()
三、扩展功能
倒计时显示
- 硬件:添加数码管或LCD屏显示剩余时间。
- 软件:在界面中添加数字标签更新倒计时。
智能控制
- 加入按键或传感器(如人体红外),实现行人过街请求触发绿灯。
多方向控制
- 使用多个红绿灯模块模拟十字路口,通过编程协调各方向信号。
注意事项
- 硬件安全:避免短路,使用5V以下电源。
- 代码调试:逐步测试每个灯的切换逻辑。
- 扩展学习:参考Arduino官方教程或Python GUI库文档。
根据你的需求选择方案,动手试试吧!