用 Arduino Mega 制作惊艳的 5×5×5 LED 光立方
项目简介
大多数人都喜欢 LED 光立方,但像 8×8×8 这样的大型光立方,无论是制作还是编程都非常繁琐。小型光立方(3×3×3 或 4×4×4)虽然容易制作,不需要移位寄存器和高侧驱动器等外部硬件,但视觉效果远不如大型光立方震撼。
本项目的目标是打造一个易于制作的 5×5×5 光立方,并编写足够酷炫的软件动画,让你在避免大型光立方繁琐制作过程的同时,依然能享受大尺寸光立方的视觉冲击。该光立方可直接由 Arduino Mega 驱动,无需任何移位寄存器,仅需 5 个 NPN 三极管(用于将每层 25 个 LED 的阴极拉低至地)。之所以避开移位寄存器,是因为手工布线极其麻烦,通常需要设计制造 PCB 才能使用。
作者过往编写过大量大型光立方代码,已将多个经典动画移植到这个 5×5×5 光立方上。值得注意的是,MEGA DAS 早在 2017 年就发布过类似项目,硬件设计几乎相同,但引脚分配和电阻值不同。本项目发布的主要原因是提供成熟的软件动画库,希望能吸引更多人尝试制作光立方。
硬件设计
Arduino Mega 拥有丰富的数字 I/O 引脚。我们使用 5 个引脚(D22-D26)驱动三极管控制各层阴极,另外 25 个引脚(D27-D51)经 180Ω 电阻驱动每层 25 个 LED 的阳极。这种设计理论上甚至支持 6×6×6 光立方,但受限于电流:Mega 单引脚限流 40mA,总电流 200mA。蓝色 LED 正向压降约 3V,三极管压降 0.7V,配合 5V 电源和 180Ω 电阻,单 LED 电流约 7.2mA,全亮一层约 180mA,加上基极电流总负载约 185mA,满足限制。
引脚排列看似混乱,实则是为配合软件中的直接端口操作,避免耗时的 digitalWrite,大幅提升刷新速度。
光立方制作
引脚成型与焊接
制作从 LED 引脚成型开始:将阳极(长脚)弯向侧面,使垂直列的阳极可焊接在一起;阳极偏移与阴极引脚需保持 90°。建议使用 BlueTack(蓝胶)做夹具,压入 LED 固定位置,保证间距一致。作者采用 0.6 英寸三向间距,成品可插入标准 0.1 英寸孔距的实验板。
按“列→面→体”顺序组装:先焊 5 个 LED 成列,再焊 5 列成面,最后焊 5 面成立方体。每完成一面即测试,避免内部虚焊无法修复。测试时将 5 根阳极线接 330Ω 电阻再接 D40-D44,阴极接 D22-D26,运行面板测试程序。
主板组装与最终测试
在实验板上预装 180Ω 电阻(靠近阳极列)和阴极驱动三极管及基极电阻。Arduino Mega 用支柱或胶水固定在板上方。将 5 面板焊接到主板,确保每根阳极列对准孔位,且所有阴极引出方向一致。用镀锡铜线连接各层 5 个阴极,再分别引至对应三极管集电极。完成接线后运行立方体测试程序,依次点亮每个 LED 验证。
软件架构
核心数据结构是全局字节数组 cube[5][5][5],1 表示点亮,0 表示熄灭。所有动画本质都是向数组写入 1 和 0。
定时中断刷新
在 setup() 中启动定时中断,每 10ms 触发一次,耗时约 6ms 刷新整个光立方,留 4ms 给主循环执行动画逻辑。刷新时逐层点亮,每层持续 1.2ms,刷新率 100Hz,单 LED 占空比 12%,人眼视觉融合下亮度接近持续点亮。
为最大化 LED 点亮时间,中断中使用直接端口操作配置 25 个阳极引脚,避免 digitalWrite 开销。代码虽显冗长(25 行单独赋值),但执行极快。
动画系统
loop() 依次调用各动画子程序。提供了 clearCube()(全熄灭)、copyDown()(层内容下移)等通用工具函数。代码包含三个草图:主程序含 15 个动画,面板测试和立方体测试用于制作阶段验证。
资源文件
- 代码:含 Panel Test、Cube Test、The Show 三个草图(仅供下载)
- 原理图:基础连接图、Mega 与光立方详细连接图
- 3D 打印外壳:可选,视频中展示的盒子模型
制造工艺
- 熨衣板制造:设计、材料与生产流程
- 魔方:从发明到现代益智玩具的演变
- 印制电路板:设计、制造与未来趋势
- 冲浪板构造与设计:从波利尼西亚起源到现代创新
- 发光二极管:从诞生到百年寿命
- RasPiRobot Board V2:将树莓派扩展为强大机器人控制器
- DIY Arduino单词时钟 – 极简优雅的实时文字显示
- Arduino复刻“棺材舞”旋律:蜂鸣器+三色LED灯光秀完整教程
- 旧开关面板改造:Arduino 触控智能开关带温度显示
- Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
- Arduino 串口简易计算器:两数四则运算演示
- 声控 8 路 LED 灯光秀:Arduino 入门项目