2. 交通信号灯模拟
任务说明
使用Arduino开发板控制红、黄、绿三个LED,模拟交通信号灯的红绿灯切换逻辑。信号灯按照“红灯亮5秒→绿灯亮4秒→黄灯亮1秒→红灯亮”的顺序循环运行,通过数字引脚输出高低电平控制LED的亮灭状态。
硬件连接
- 红色LED正极(长脚)→ Arduino数字引脚D2,负极串联220Ω电阻后接GND
- 黄色LED正极(长脚)→ Arduino数字引脚D3,负极串联220Ω电阻后接GND
- 绿色LED正极(长脚)→ Arduino数字引脚D4,负极串联220Ω电阻后接GND
完整代码
// 引脚定义
const int RED_PIN = 2; // 红色LED接D2
const int YELLOW_PIN = 3; // 黄色LED接D3
const int GREEN_PIN = 4; // 绿色LED接D4
// 持续时间(毫秒)
const int RED_DURATION = 5000; // 红灯5秒
const int GREEN_DURATION = 4000; // 绿灯4秒
const int YELLOW_DURATION = 1000; // 黄灯1秒
void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(YELLOW_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
// 初始状态:所有灯熄灭
digitalWrite(RED_PIN, LOW);
digitalWrite(YELLOW_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
}
void loop() {
// 红灯亮
digitalWrite(RED_PIN, HIGH);
digitalWrite(YELLOW_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
delay(RED_DURATION);
// 绿灯亮
digitalWrite(RED_PIN, LOW);
digitalWrite(YELLOW_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
delay(GREEN_DURATION);
// 黄灯亮
digitalWrite(RED_PIN, LOW);
digitalWrite(YELLOW_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
delay(YELLOW_DURATION);
}
运行与验证
- 按上述引脚定义完成硬件接线,将代码上传至Arduino开发板。
- 观察三个LED的亮灭顺序:红灯亮5秒→绿灯亮4秒→黄灯亮1秒→红灯亮,如此循环。
- 判定标准:任意时刻只有一个LED点亮,且红灯、绿灯、黄灯的持续亮灯时间分别约为5秒、4秒、1秒,循环无中断。
预期输出时序:红灯亮(0~5s)→ 绿灯亮(5~9s)→ 黄灯亮(9~10s)→ 红灯亮(10~15s)→ 绿灯亮(15~19s)→ 黄灯亮(19~20s)→ ……