如何根据需求选择制作红绿灯的不同实现方案?

  制作红绿灯可以根据需求选择不同的方法,以下是几种常见场景的实现方案,包括硬件制作和编程模拟:


一、实物红绿灯模型(硬件制作)

材料准备:

  • Arduino 开发板(如 Arduino UNO)
  • 面包板 + 杜邦线
  • LED(红、黄、绿各1个)
  • 220Ω 电阻 ×3
  • USB 数据线(供电和上传代码)

电路连接:

  1. 将红色LED长脚(正极)接Arduino数字引脚13,短脚(负极)接GND。
  2. 黄色LED接引脚12,绿色接引脚11(均串联220Ω电阻)。
  3. 确保所有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()

三、扩展功能

  1. 倒计时显示

    • 硬件:添加数码管或LCD屏显示剩余时间。
    • 软件:在界面中添加数字标签更新倒计时。
  2. 智能控制

    • 加入按键或传感器(如人体红外),实现行人过街请求触发绿灯。
  3. 多方向控制

    • 使用多个红绿灯模块模拟十字路口,通过编程协调各方向信号。

注意事项

  • 硬件安全:避免短路,使用5V以下电源。
  • 代码调试:逐步测试每个灯的切换逻辑。
  • 扩展学习:参考Arduino官方教程或Python GUI库文档。

  根据你的需求选择方案,动手试试吧!

留言与评论(共有 0 条评论)
   
验证码: