简介
是否曾想搭建一个交通灯,却苦于手边没有元件?借助 Velxio,您可以直接在浏览器中模拟一整套基于 Arduino 的交通灯系统。本项目使用三个 LED(红、黄、绿)连接 Arduino Uno,模拟经典的交通灯顺序:红 → 黄 → 绿 → 黄 → 红。这是一个完美的入门项目,帮助您学习数字输出、时序控制和顺序逻辑。
电路详解
让我们来看看电路。下图展示了完整的接线方式:

元件清单
- Arduino Uno – 整个系统的大脑。
- 红色 LED – 连接到数字引脚 13。
- 黄色 LED – 连接到数字引脚 12。
- 绿色 LED – 连接到数字引脚 11。
- 电阻 – 每个 LED 都需要一个限流电阻(通常为 220Ω)串联在其阳极上。在 Velxio 中,内置 LED 已包含内部电阻,因此无需手动添加。
接线细节
每个 LED 有两个引脚:阳极(较长引脚,标记为 “A”)和阴极(较短引脚,标记为 “C”)。接线非常简单:
- 红色 LED:阳极通过红色导线(
#ff0000)连接到 Arduino 引脚 13。阴极通过黑色导线连接到 Arduino GND。 - 黄色 LED:阳极通过黄色导线(
#ffaa00)连接到 Arduino 引脚 12。阴极连接到 GND。 - 绿色 LED:阳极通过绿色导线(
#00ff00)连接到 Arduino 引脚 11。阴极连接到 GND。
三个 LED 共用 Arduino 上的同一个 GND 连接。这是一种共地配置。
代码详解
现在让我们来看看控制灯光变化的代码。在 Velxio 中打开代码编辑器:

// Traffic Light Simulator
// Red -> Yellow -> Green -> Yellow -> Red
const int RED_PIN = 13;
const int YELLOW_PIN = 12;
const int GREEN_PIN = 11;
void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(YELLOW_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
}
void loop() {
// Red light
digitalWrite(RED_PIN, HIGH);
delay(3000);
digitalWrite(RED_PIN, LOW);
// Yellow light
digitalWrite(YELLOW_PIN, HIGH);
delay(1000);
digitalWrite(YELLOW_PIN, LOW);
// Green light
digitalWrite(GREEN_PIN, HIGH);
delay(3000);
digitalWrite(GREEN_PIN, LOW);
// Yellow light again
digitalWrite(YELLOW_PIN, HIGH);
delay(1000);
digitalWrite(YELLOW_PIN, LOW);
}
工作原理
- 引脚定义:我们为三个引脚定义常量:
RED_PIN = 13、YELLOW_PIN = 12、GREEN_PIN = 11。这些与接线一致。 - 初始化:在
setup()中,我们使用pinMode()将三个引脚设置为OUTPUT模式。这告诉 Arduino 通过这些引脚输出电压。 - 循环:
loop()函数会无限运行。它遵循以下顺序:- 点亮红色 LED(
HIGH),等待 3 秒,然后熄灭(LOW)。 - 点亮黄色 LED,等待 1 秒,然后熄灭。
- 点亮绿色 LED,等待 3 秒,然后熄灭。
- 再次点亮黄色 LED,等待 1 秒,然后熄灭。
- 然后循环从红灯重新开始。
- 点亮红色 LED(
这样就形成了熟悉的交通灯模式。
学生需掌握的关键概念
- 数字输出:
digitalWrite(pin, HIGH)将引脚设置为 5V(开启),LOW设置为 0V(关闭)。 - 使用
delay()控制时序:delay(毫秒)会暂停程序。注意:当delay()运行时,Arduino 无法执行其他任何操作。 - 顺序逻辑:操作的顺序至关重要。代码逐行执行,因此灯光按可预测的顺序变化。
- 共地:所有 LED 共用同一个接地连接。这在数字电路中很常见。
常见问题与调试技巧
- 引脚编号错误:仔细检查代码中的引脚编号是否与接线一致。如果红色 LED 接在引脚 13 上,但代码中写的是
12,它就不会亮。 - LED 方向:LED 是有极性的。阳极(长脚)必须连接到 Arduino 引脚,阴极(短脚)连接到 GND。在 Velxio 中,LED 元件默认方向正确。
- 缺少电阻:在实际电路中,务必为每个 LED 串联一个限流电阻(220Ω–1kΩ)以防止损坏。Velxio 的内置 LED 已包含电阻,但如果使用自定义元件,请添加电阻。
delay()阻塞问题:如果后续想添加按钮或传感器,delay()会冻结程序。建议使用millis()实现非阻塞时序控制。
扩展建议
在基本交通灯正常工作后,可以尝试以下增强功能:
- 添加行人按钮:使用一个按钮请求通行信号。按下后,交通灯变为红色,然后点亮一个白色 LED(行人通行)。
- 使用
millis()替代delay():重写代码,使用millis()进行时序控制。这样 Arduino 在等待期间可以检测按钮按下。 - 添加蜂鸣器:将一个压电蜂鸣器连接到引脚,在绿灯即将变黄时发出提示音。
- 模拟人行横道:为行人过街添加两个 LED(红和绿),并与交通灯协调工作。
动手尝试
准备好搭建自己的交通灯了吗?在 Velxio 中打开示例并开始实验:
您可以编辑代码、更改时序或添加更多 LED。模拟器完全在浏览器中运行——无需下载,无需硬件。使用工具栏编译并运行您的代码:


如果需要添加新元件,请打开元件选择器:

如果想使用库,只需点击一下即可打开库管理器:

祝您模拟愉快!