news 2026/6/4 23:22:21

Arduino循环LED灯制作:从电路原理到环保创意小夜灯

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Arduino循环LED灯制作:从电路原理到环保创意小夜灯

1. 项目概述:当废弃牛奶盒遇见闪烁的LED

如果你家里有孩子,或者你本身就是个对电子制作充满好奇的“大孩子”,那么你肯定对桌上堆满的电子元件和五颜六色的导线又爱又恨。爱的是它们能创造出无限可能,恨的是每次项目做完,总会剩下一些零零碎碎,更别提那些喝完就扔的牛奶盒、饮料瓶,总觉得直接丢掉有点可惜。今天,我想分享的就是一个能把这两件“头疼事”变成“开心事”的小项目:用最基础的Arduino板、几颗LED,加上一个随手可得的废弃牛奶盒,制作一个会循环闪烁的创意小夜灯。

这不仅仅是一个手工,更是一次绝佳的亲子STEAM活动。它成本极低,几乎零门槛,但涵盖的知识点却非常核心:从最基础的电路连接、认识电阻的作用,到理解Arduino如何通过程序控制硬件,再到最后发挥创意进行美化。整个过程就像搭积木一样直观,孩子能在短时间内看到自己努力的成果——一个真正会发光、由自己亲手制作的小灯,这种成就感是无可替代的。更重要的是,我们赋予了废弃包装盒新的生命,把“垃圾”变成了“宝贝”,这本身就是一堂生动的环保课。

我选择Arduino Leonardo作为核心,是因为它对于入门者来说非常友好,USB接口直接供电和编程,省去了额外电源的麻烦。三颗不同颜色的LED灯,通过简单的程序让它们依次点亮、熄灭,形成一种舒缓的循环节奏,非常适合作为夜间的小夜灯。而那个被洗净的牛奶盒,就是我们的灯罩和艺术画布。接下来,我会把整个制作过程掰开揉碎,从电路原理到代码解析,从安全注意事项到创意发挥,一步步带你(和你的小助手)完成这个充满乐趣的项目。

2. 核心思路与材料清单解析

2.1 为什么是“循环灯”?项目设计逻辑拆解

这个项目的核心目标很明确:制作一个能自动、循环点亮多颗LED的灯。为什么选择“循环”这个效果?因为它巧妙地串联起了多个电子制作和编程的入门概念。

首先,从硬件上看,我们需要控制三颗独立的LED。如果让它们同时亮灭,那只需要一个开关,学不到东西。而让它们依次亮起,就要求我们必须能独立控制每颗LED的通断。这自然引出了我们需要Arduino上三个独立的“数字输出引脚”。每个引脚就像一个可以软件控制的开关,能输出高电平(相当于打开开关,供电)或低电平(关闭开关,断电)。

其次,“循环”意味着需要定时。第一颗LED亮多久后熄灭,同时第二颗亮起?这就需要用到编程中的“延时”概念。在loop()函数里,我们通过delay()函数告诉Arduino:“保持当前状态,等待指定的毫秒数”。这样,我们就能精确地编排出一场灯光秀。

最后,将这套电子系统装入一个由回收材料制作的灯罩里,项目的内涵就升华了。它从单纯的电路练习,变成了一个融合了电子工程、编程逻辑、环保意识和艺术创作的综合性作品。对于孩子来说,他们看到的不是一个冰冷的电路板,而是一个自己创造的、有温度、会发光的“伙伴”。

2.2 材料与工具清单:每一样东西的作用与安全须知

根据原始资料,我们需要准备内外两部分材料。这里我结合自己的经验,对清单进行了细化补充和解释,特别是安全方面,这是儿童项目的第一要务。

内部电子元件(核心硬件):

  1. Arduino Leonardo 开发板 x1:项目的“大脑”。为什么用Leonardo而不是更常见的Uno?Leonardo的USB芯片直接支持模拟键盘、鼠标等功能,虽然本项目用不到,但它同样稳定易用。任何一款具有数字输出引脚的Arduino板(如Uno, Nano)都可以完美替代。
  2. LED(发光二极管)x3:建议选择不同颜色(如红、黄、绿),直径5mm的直插LED最常见。关键安全点:LED有正负极之分,长脚为正极(阳极),短脚为负极(阴极)。接反了不会烧坏,但不会亮。
  3. 220欧姆电阻 x3这是整个电路安全的灵魂!LED的工作电压很低(通常2-3V),电流也很小(约20mA)。而Arduino引脚输出是5V,如果不加电阻直接连接,过大的电流会瞬间烧毁LED。电阻在这里的作用就是“限流”,像一道闸门,把电流限制在安全范围内。220欧姆是对于普通5mm LED搭配5V电源的一个经典安全值。
  4. 面包板 x1:免焊接实验板,是电子初学者的神器。它内部有特定的连接规则,可以让我们像插积木一样快速连接和修改电路,极大降低了门槛和风险。
  5. 公对公杜邦线 若干:用于连接Arduino、面包板和元件。建议准备至少10根,颜色最好区分开(如红色接正极,黑色接负极,其他颜色用于信号线),这样电路看起来更清晰。

外部装饰材料(创意发挥):

  1. 空纸盒饮料/牛奶盒 x1必须彻底洗净、晾干!残留的液体不仅会弄脏工作区,还可能引起短路或滋生细菌。建议用洗涤剂清洗后,用吹风机彻底吹干内部。
  2. 水彩颜料、画笔:用于装饰灯罩。水彩容易干,色彩通透,适合在纸盒上作画。也可以使用丙烯颜料(覆盖力强)或直接贴彩纸。
  3. 美工刀或刻刀 x1儿童操作需在成人严格监督下进行!用于在纸盒上开孔,让LED灯光透出来。也可以先用铅笔标记,由家长代为切割。
  4. 其他可选:尺子(画线定位)、铅笔、胶水(固定内部电路)、一张半透明的油纸或硫酸纸(贴在开孔内部,让光线更柔和均匀)。

重要安全提示:整个制作过程中,最危险的两个环节是使用刀具电路连接。务必确保:

  • 切割工作由成人完成,或儿童在成人手把手指导下进行。
  • 连接电路时,确保Arduino未连接USB线,避免误接短路。所有连接检查无误后再通电。
  • 虽然Arduino的USB口(5V)电压很低,相对安全,但仍需养成良好的用电习惯:断电操作。

3. 电路搭建详解:从原理图到面包板

3.1 看懂电路图:电流的路径与电阻的使命

在动手插线之前,我们先用“水流”来类比一下电路,这能让孩子更容易理解。想象一下:

  • Arduino的5V引脚和GND(地)引脚:就像一个水泵(5V)和一个水池(GND)。水泵把水从水池里抽上来,再让它流回去。
  • 导线:就是连接水泵和水池的“水管”。
  • LED:是一个特殊的水车,只有水从正确的方向(正极到负极)流过时,它才会转动(发光)。
  • 电阻:是安装在水管中的一个“窄口”。如果没有这个窄口,水泵功率太大,水流会太急,一下子就把水车冲坏了。这个窄口把水流限制在安全的速度,保护了水车。

我们的目标是用三套这样的“水泵-窄口-水车”系统,但让Arduino这个“总控开关”来决定哪一套系统先通水。对应的电路原理非常简单:每个LED的正极,通过一个220欧姆电阻,连接到Arduino的一个数字引脚(我们选用11,12,13);所有LED的负极,一起连接到Arduino的GND引脚。这就形成了三个独立的回路。

3.2 面包板实战连接:一步一步搭建安全电路

面包板看起来密密麻麻都是孔,其实内部有隐藏的金属条连接。通常,板子两侧各有一条电源轨(标有“+”和“-”的竖列),同一列的所有孔是相连的。中间是元件区,横向每5个孔为一组��相互连通。

连接步骤(请务必在断电状态下操作):

  1. 安置Arduino与面包板:将Arduino和面包板并排放在桌面上。用一根导线将Arduino的任意一个GND引脚连接到面包板侧面“-”电源轨的任一孔中。这样,我们就将面包板的整个负轨变成了公共的“地线池”。
  2. 安装限流电阻:取三个220欧姆电阻,将它们的一端分别插入面包板元件区的三排不同排中(例如第10排、15排、20排),另一端则分别插入更靠右侧的另一排。技巧:电阻的引脚可以弯折,尽量让元件贴紧面包板,保持电路整洁。
  3. 连接Arduino控制引脚:取三根导线,分别将Arduino的数字引脚13、12、11连接到三个电阻左侧所在的孔。例如,连接13号引脚的线,就插在左边第一个电阻的左端孔位。
  4. 安装LED:现在连接LED。以第一个回路为例:找到连接13号引脚的那个电阻,它的右端孔位就是“限流后的5V”。将红色LED的长脚(正极)插入这个孔位所在的横排的另一个孔里。然后,将同一个LED的短脚(负极)插入面包板侧面的“-”电源轨。确保三个LED的正负极不要插反。
  5. 完成共地连接:三个LED的负极都已经通过面包板的负轨连接在一起了,而这个负轨又通过最初的导线连回了Arduino的GND。至此,三个独立的回路全部搭建完毕。

检查清单

  • 每个LED是否都串联了一个220欧姆电阻?
  • 每个LED的长脚(正极)是否通过电阻连接到了Arduino引脚?
  • 所有LED的短脚(负极)是否都连接到了面包板的负轨?
  • 面包板负轨是否通过导线连回了Arduino的GND?

确认无误后,就可以用USB线将Arduino连接到电脑了。此时,Arduino板上的电源指示灯应该亮起,但LED可能还不会亮,因为我们还没有上传程序。

4. 代码编写与上传:让灯光“活”起来

4.1 初识Arduino IDE与程序结构

我们需要在电脑上安装Arduino IDE(集成开发环境),这是一个免费软件。安装后打开,你会看到一个基本的程序框架:

void setup() { // 初始化代码,只运行一次 } void loop() { // 主循环代码,重复运行 }
  • setup()函数:就像演出开始前的“准备工作”。我们在这里告诉Arduino,哪些引脚要用来输出信号。
  • loop()函数:就像不断重复的“演出内容”。我们在这里编写灯光如何循环的逻辑。

4.2 逐行解析我们的“循环灯”代码

让我们把提供的代码复制到IDE中,并详细解释每一行:

void setup() { pinMode(13, OUTPUT); // 将13号引脚设置为“输出”模式 pinMode(12, OUTPUT); // 将12号引脚设置为“输出”模式 pinMode(11, OUTPUT); // 将11号引脚设置为“输出”模式 }

setup()里,我们用了三次pinMode()函数。这个函数有两个参数:第一个是引脚编号(11,12,13),第二个是模式(OUTPUT)。OUTPUT模式意味着这个引脚将被我们控制,用来向外输出电流(驱动LED)。如果设置为INPUT模式,则是用来读取外部信号的。

void loop() { // 第一颗LED(接13号引脚)亮起 digitalWrite(13, HIGH); // 向13号引脚输出高电平(5V),LED回路通电 delay(3000); // 保持当前状态3000毫秒,即3秒 digitalWrite(13, LOW); // 向13号引脚输出低电平(0V),LED回路断电,灯灭 // 第二颗LED(接12号引脚)亮起 digitalWrite(12, HIGH); delay(3000); digitalWrite(12, LOW); // 第三颗LED(接11号引脚)亮起 digitalWrite(11, HIGH); delay(3000); digitalWrite(11, LOW); // 以下代码重复了上面的顺序,形成另一个循环 digitalWrite(13, HIGH); delay(3000); digitalWrite(13, LOW); digitalWrite(12, HIGH); delay(3000); digitalWrite(12, LOW); digitalWrite(11, HIGH); delay(3000); digitalWrite(11, LOW); }

loop()函数里的逻辑非常直观:

  1. digitalWrite(13, HIGH):打开13号引脚的“开关”,电流流出,第一颗LED亮。
  2. delay(3000):程序暂停3秒,期间LED保持亮的状态。
  3. digitalWrite(13, LOW):关闭13号引脚的“开关”,第一颗LED灭。
  4. 接着对12号、11号引脚重复同样的“开-等-关”操作。
  5. 代码后半段又从头执行了一遍,所以整体效果是:LED1亮3秒→灭→LED2亮3秒→灭→LED3亮3秒→灭→然后重复这个序列。

代码中的“改(delay1500)”是什么意思?这是原作者的注释,提示你可以把delay(3000)改成delay(1500),即把每次点亮的时间从3秒缩短到1.5秒。这样灯光切换的节奏会更快。你可以让孩子尝试修改这个数字,上传代码后观察效果,这是理解参数作用最直接的方式。

4.3 上传代码与测试

  1. 在IDE左上角,选择正确的板卡类型:工具 -> 开发板 -> Arduino Leonardo
  2. 选择正确的端口:工具 -> 端口,通常会显示为COMX(Windows)或/dev/cu.usbmodemXXXX(Mac)。
  3. 点击工具栏上的“→”上传按钮。
  4. 等待IDE下方状态栏显示“上传成功”。

如果一切正常,你应该立刻看到三颗LED开始按照你编写的顺序循环点亮。如果某颗灯不亮,请立即断电,然后按前面的“检查清单”排查电路连接,特别是LED的正负极和电阻是否接好。

5. 创意灯罩制作与总装

5.1 设计并制作灯光窗口

电路测试成功后,我们就可以专注于灯罩的美化了。这个牛奶盒将容纳整个电路,并成为光的画布。

  1. 清洁与干燥:再次确保牛奶盒内部完全干燥,无任何液体或潮气。
  2. 规划窗口位置:将面包板(连同Arduino)放入牛奶盒,大致确定位置。用铅笔在牛奶盒正面(你希望灯光透出的那一面)轻轻标记出三颗LED的位置。技巧:标记点可以稍微比LED直径大一点,并且考虑将它们排列成有趣的图案,比如一个笑脸、一条波浪线或者简单的等距排列。
  3. 切割窗口此步骤建议由成人操作,或严格监督。使用美工刀,沿着标记点小心地切割出圆形或方形的窗口。切口不必非常光滑,后续可以装饰。
  4. 柔化光线(可选):如果你觉得LED点光源太刺眼,可以剪三小片半透明的油纸或硫酸纸,从盒子内部贴在窗口上,用胶带固定。这样光线会变得柔和均匀。

5.2 艺术装饰与电路固定

  1. 外部涂鸦:让孩子用水彩颜料自由地在牛奶盒外部创作吧!可以画上星空、海洋、森林,或者简单的色块和图案。这是发挥艺术想象力的时刻。画完后,可以用吹风机冷风档加速干燥。
  2. 内部固定:等外部颜料干透后,我们需要把电路系统安全地固定在盒子内部。可以使用蓝丁胶、热熔胶(成人操作)或甚至用绳子系住面包板,将其固定在盒子底部,确保LED正对着我们开好的窗口。
  3. 电源线引出:在盒子侧面或背面靠近底部的位置,开一个小孔,将Arduino的USB线穿出来。这样盒子可以盖上(或半开着),而USB线能连接到电脑或一个手机充电器(5V1A即可)上供电。

5.3 最终调试与效果优化

总装完成后,再次通电测试。观察灯光是否能很好地从窗口透出,光线效果是否满意。你可以和孩子一起:

  • 调整延时:回到代码,修改delay()里的数值,体验从慢节奏呼吸灯到快节奏闪烁灯的不同效果。
  • 尝试新序列:比如让三颗灯同时亮、同时灭(流水灯反向),或者让两颗灯一起亮。只需要修改digitalWritedelay的顺序即可。
  • 探索PWM调光:如果使用的是支持PWM(脉冲宽度调制,引脚旁有~标记)的引脚(如9,10,11),可以尝试用analogWrite(11, 128)代替digitalWrite,参数从0到255,可以调节LED的亮度,实现渐变效果。

6. 问题排查与扩展思考

6.1 常见问题速查表

即使按照步骤操作,也可能遇到一些小问题。别担心,这同样是学习的一部分。下面这个表格整理了可能的情况和解决方法:

现象可能原因排查步骤与解决方法
所有LED都不亮1. Arduino未通电。
2. USB线或端口故障。
3. 公共地线(GND)未连接好。
1. 检查Arduino板上的电源指示灯是否亮起。
2. 换一根USB线或电脑端口试试。
3. 重点检查面包板负轨到Arduino GND的连线是否牢固。
只有一颗LED不亮1. 该LED正负极接反。
2. 该LED或对应的电阻损坏。
3. 连接到该LED的导线或面包板孔位接触不良。
1. 断电,检查该LED长脚(正极)是否通过电阻连接到了Arduino引脚,短脚是否接GND。
2. 将该LED与一个正常发光的LED交换位置测试,判断是灯坏还是电路问题。
3. 按压或重新插拔该回路的导线和元件。
LED亮度很暗或闪烁不稳定1. 电阻值过大(如用了1KΩ以上)。
2. 接触电阻过大(导线或面包板老化)。
3. USB电源功率不足。
1. 确认使用的是220Ω电阻。
2. 尝试更换导线,或将元件插到面包板其他区域测试。
3. 尝试连接电脑另一个USB口或使用独立的5V充电器。
上传代码失败1. 板卡类型选择错误。
2. 端口选择错误。
3. 驱动未安装(仅限某些克隆板)。
1. 确认在IDE中选择了“Arduino Leonardo”。
2. 拔插USB线,重新选择端口。
3. 如果是克隆板,可能需要安装特定CH340驱动,请根据板子型号搜索安装。
灯光顺序与代码不符电路连接与代码中引脚编号不匹配。核对代码中digitalWrite的引脚号(11,12,13)是否与实际连接LED的引脚号一致。

6.2 项目扩展与思维发散

这个基础项目是一个完美的起点,可以引导孩子思考更多:

  1. 传感器交互:能否增加一个光敏电阻?让灯在环境变暗时自动亮起,变成真正的自动小夜灯。这需要学习模拟输入analogRead()和条件判断if语句。
  2. 更多灯光模式:利用数组和循环for,可以更简洁地控制几十颗LED,实现更复杂的流光效果。
  3. 结构升级:除了牛奶盒,还可以用塑料瓶、玻璃罐、甚至旧玩具作为灯罩。思考不同材质对光线传播的影响(透光、散射、折射)。
  4. 能源思考:我们现在用的是USB供电。是否可以尝试用一块旧的手机充电宝供电,让灯摆脱线材的束缚?这涉及到移动电源和电压稳定性的小知识。

完成这个项目后,孩子收获的不仅仅是一个会闪的灯。他们亲手验证了物理电路原理,看到了代码如何精确控制现实世界,体验了从设计、制作到调试、解决问题的完整工程流程,更重要的是,建立了“变废为宝”的环保意识和“我能创造”的自信心。这些,远比项目本身更加闪光。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/4 23:20:58

2026年6月ai写小说软件测评推荐:TOP5专业评测防剧情跑偏价格适用场景

摘要 当小说创作者纷纷寻求AI工具以突破灵感瓶颈、提升产出效率时,如何从日益繁杂的市场中甄别出真正贴合创作本质的专业工具,而非泛用型聊天机器人,成为摆在每位写作者面前的核心决策难题。根据IDC发布的《全球AI软件市场半年度追踪报告》&a…

作者头像 李华
网站建设 2026/6/4 23:20:04

Dify工作流HTTP请求实战宝典:从零到精通的完整解决方案

Dify工作流HTTP请求实战宝典:从零到精通的完整解决方案 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程,自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Dify…

作者头像 李华
网站建设 2026/6/4 23:19:22

告别网盘限速烦恼:这款免费工具让你下载速度飙升500%

告别网盘限速烦恼:这款免费工具让你下载速度飙升500% 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…

作者头像 李华
网站建设 2026/6/4 23:19:20

如何彻底修复DWPose姿态估计器报错:3种实用解决方案

如何彻底修复DWPose姿态估计器报错:3种实用解决方案 【免费下载链接】comfyui_controlnet_aux ComfyUIs ControlNet Auxiliary Preprocessors 项目地址: https://gitcode.com/gh_mirrors/co/comfyui_controlnet_aux ComfyUI ControlNet Aux项目中的DWPose姿态…

作者头像 李华
网站建设 2026/6/4 23:17:07

基于smarsnail开发板的温湿度(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)_文章底部可以扫码

基于smarsnail开发板的温湿度 摘 要 摘要:无线传感器网络(WSN)是一个智能、独立的测量和控制网络系统,它可以执行特定于环境的任务,由许多小型传感器节点组成,具有通信和计算能力,这些节点位于无人监视的监视区域内许…

作者头像 李华
网站建设 2026/6/4 23:14:46

电脑空间告急?这个免费神器让你轻松找回10GB存储空间

电脑空间告急?这个免费神器让你轻松找回10GB存储空间 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka 你是否曾对着电脑右下角的"存…

作者头像 李华