第98-10课:Arduino交通信号灯
交通灯是我们很少会去思考的日常系统之一——直到我们亲手搭建一个。在这个项目中,你将使用 Arduino 来模拟真实的交通灯序列:绿灯亮,然后黄灯,然后红灯,每个灯都有各自可配置的持续时间,并无限循环。这是一个完美的初学者项目,因为它教会你顺序定时逻辑、多输出控制,以及你编写的代码与你所看到的物理世界之间的关系。
除了课堂演示之外,你在这里学到的定时逻辑随处可见:
- 为模型铁路或立体模型搭建逼真的交通灯模型
- 为车间或车库创建定时指示系统(例如“可以进入”/“等待”信号)
- 学习带按钮触发阶段的人行横道信号灯的基础知识
- 为工业或家庭自动化任务制作定时继电器序列原型
- 用一个熟悉、易识别的物体教孩子们了解顺序、定时和电子学
最棒的是:上传之后,整个装置就能独立运行。你只需从电脑上对 Arduino 编程一次,然后用电池或适配器供电,它就能永远工作——无需电脑(视频 12:27 处)。
交通灯的工作原理
交通灯实际上只是三个输出的定时序列。Arduino 一次点亮一个 LED,等待设定的秒数,将其关闭,然后切换到下一个。之后循环重复。在视频的示例定时中,绿灯亮 3 秒,黄灯亮 1 秒,红灯亮 3 秒——但所有这些都可以在代码中调整(视频 49:44 处)。
这个序列之所以感觉逼真,是因为这些持续时间反映了现实世界的交通流:绿灯和红灯较长,因为车辆需要时间通过路口,而黄灯较短,因为它只是一个过渡警告。你可以调整这些时间以匹配你喜欢的任何场景。
硬件与组件
这个项目的零件清单很少:
- 1 × Arduino 板(Uno、Nano 或 Mega——任何至少有 3 个数字引脚的板子)
- 3 × LED(红色、黄色/橙色和绿色——不同颜色能让效果更明显)
- 3 × 电阻(300 Ω 到 1 kΩ 都可以;视频中使用的是 1 kΩ)
- 1 × 面包板
- 跳线
- 可选:锂离子电池或 5 V 电源适配器,用于独立运行
视频建议使用三种颜色明显不同的 LED,这样交通灯效果会立刻显现——否则你就得给它们贴标签(视频 02:04 处)。
理解 LED 限流
每个 LED 都需要串联一个限流电阻。原因如下:LED 具有几乎固定的正向电压(标准 5 mm LED 通常约为 2 V),如果你将它直接连接到 5 V,电流会激增并烧毁它。电阻会吸收多余的电压。
使用欧姆定律,如果 LED 压降为 2 V,电源为 5 V,那么电阻上必须压降 3 V。以约 10 mA 的目标电流计算,电阻值大约为 300 Ω(视频 04:41 处)。实际上,从 300 Ω 到 1 kΩ 的任何值都可以——更高的值只会让 LED 更暗。
接线指南
每个 LED 的接线方式都相同:阳极(较长的引脚)连接到 Arduino 数字引脚,阴极(较短的引脚,LED 本体平坦的一侧)通过电阻连接到地。
在视频的接线中,红色 LED 连接到引脚 2,黄色/橙色 LED 连接到引脚 3,绿色 LED 连接到引脚 4(视频 50:50 处)。三个电阻共用面包板上的公共接地轨。面包板上颜色的顺序无关紧要——重要的是代码中的引脚编号与你实际使用的引脚一致。
视频中的一个实用小贴士:电阻可以放在LED的任意一侧。你可以把它放在Arduino引脚和LED阳极之间,或者放在LED阴极和地之间 —— 从电气角度来说是一样的(视频51:52处)。
代码讲解
完整程序可在文章下方获取。这里我们将重点介绍你需要自定义的部分。
在草图顶部,三个引脚定义将每个LED映射到一个数字引脚。如果你将LED连接到了不同的引脚,请修改这些值:
const int greenLED = 4;
const int yellowLED = 3;
const int redLED = 2;
接下来是时间常量。它们以毫秒为单位控制每盏灯保持点亮的时间。视频中默认使用绿灯5000毫秒、黄灯1000毫秒、红灯5000毫秒 —— 但在演示过程中,这些值被改为3秒/1秒/3秒,后来又改为10秒/3秒/10秒(视频56:27处):
const int greenOnTime = 5000;
const int yellowOnTime = 1000;
const int redOnTime = 5000;
要改变交通灯的节奏,只需编辑这三个值。想要一个缓慢、逼真的十字路口?试试10000、3000、10000。想要快速演示?试试1000、300、1000。
在loop()内部,顺序很直接:打开绿灯,等待,关闭绿灯;打开黄灯,等待,关闭黄灯;打开红灯,等待,关闭红灯;然后循环回到绿灯。串口监视器会打印每次状态变化,以便你验证时序是否符合预期。
现场演示
代码上传后,Arduino会自动运行这个循环。在视频中,绿色LED首先点亮,然后在其持续时间结束后黄灯短暂亮起,接着是红灯,循环立即重新开始(视频55:20处)。
串口监视器以文本形式同步显示 —— “green LED on”、“green off”、“yellow on”等等 —— 这是确认时序值是否按预期工作的好方法。当你准备脱机运行时,断开USB并连接锂离子电池或5V适配器;Arduino将在没有电脑的情况下继续循环运行(视频56:11处)。
本视频的相关项目
- 第98-1课:如何使用Arduino打开和关闭LED
- 第98-2课:如何使用Arduino通过按钮打开和关闭LED
- 第98-3课:如何使用Arduino通过按钮切换LED的开关
- 第98-4课:使用Arduino实现LED渐隐:亮度控制
- 第98-5课:使用Arduino在按下按钮时渐隐灯光
- 第98-6课:使用Arduino的跷跷板LED游戏
- 第98-7课:使用Arduino和5个LED的走马灯
- 第98-8课:使用Arduino的按钮和LED走马灯
- 第98-9课:使用Arduino的LED电压电平表或使用电位器的走马灯
章节
- [00:00] 10个Arduino LED项目概述
- [01:22] Arduino逐步课程介绍
- [02:29] 什么是LED:符号、阳极和阴极
- [03:49] 计算LED限流电阻
- [49:25] 交通灯项目介绍
- [49:44] 交通灯时序讲解
- [50:34] 交通灯接线图
- [52:13] 交通灯代码讲解
- [54:32] 使用串口监视器的现场演示
- [55:30] 修改时序值
- [56:11] 使用电池供电运行交通灯
This code has not been parsed yet. Please return to the admin panel to parse it.
|||您可能需要的东西
-
亚马逊SunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
亚马逊
-
亚马逊
资源与参考
-
文档SunFounder 3合1物联网/智能车/学习套件的文档docs.sunfounder.com
文件📁
Arduino 库(zip 格式)
-
SunFounder 的 3 合 1 智能汽车学习套件源代码
3in1-kit-main-v2.zip12.80 MB
用户手册
-
SunFounder 3合1 Arduino智能车组装手册本文档逐步展示SunFounder 3合1 Arduino智能车的组装过程
SunFounder_car_assembly_manual.pdf1.20 MB