动态 LED 三角艺术:用 Arduino UNO 驱动 45 盏 APA106 RGB 灯珠
组件与物料
- APA-106 可编程 RGB LED ×45
- 22 AWG 镀锡铜线 ×1 卷
- Arduino UNO ×1
- 12 英寸等边三角形胶合板(厚 1/4 英寸)×1
所需工具
- 电烙铁
- 热熔胶枪
- 散热夹(焊接时保护 LED)
项目简介
本项目将 45 颗 APA-106(兼容 WS2812 协议)排列成等边三角形矩阵(第 1 行 1 颗,第 2 行 2 颗……第 9 行 9 颗),由 Arduino UNO 单根数据线串联驱动,使用 Adafruit NeoPixel 库控制。亮度限制在 30/255,整套系统可直接由 USB 供电(5V/1A),无需额外电源。
硬件制作
- 钻孔:胶合板按 1 英寸间距钻 8 mm 孔,LED 压入紧固。
- 引脚弯曲:APA-106 四脚定义为(从左向右)DIN、VDD、GND、DOUT。按示意图弯曲,GND 多弯一段以便识别。
- 走线策略:数据线呈“之”字形串联(奇数行左→右,偶数行右←)。电源轨分别汇集于左右两侧,建议将 GND 汇右、VDD 汇左,避免数据线跨越电源轨。
- 焊接:用 22 AWG 裸铜线焊接所有连接,UNO 以塑料柱隔离并热熔胶固定于板背面。
- 外壳:提供 .stl 文件 3D 打印外壳,亦可自制木质外壳。
软件设计
得益于 NeoPixel 库,软件极简:setPixelColor(index, color) 设定单灯颜色,show() 刷新全屏。库用 32 位整数编码 RGB(各 8 位)。作者另设 0–43 调色盘(0=关,1–42=彩虹色,43=白),并封装 mySetPixel(ledNum, paletteColor) 以适配自定义编号(按行顺序 0–44,非数据线物理顺序)。
动画核心:旋转算法
三角形由三层同心三角组成:外层 24 LED、中层 15 LED、内层 6 LED,公倍数 120。rotate(steps, dir, speed, pattern) 在 120 步内完成 360° 旋转。通过改变起始图案、旋转方向、速度,衍生出 26 种动画,总时长约 5 分钟循环。
代码结构(4 标签页)
- Declarations:常量表、查找表、
setup() - MainLoop:按顺序调用各动画
- Animations:具体动画实现
- Utilities:通用子程序(颜色映射、延时、旋转核心等)
所有查找表存储于 Flash(PROGMEM),不占用宝贵 RAM。完整代码打包下载(含测试例程、26 动画秀、NeoPixel 库使用说明)。
制造工艺
- Walabasquiat:Walabot、树莓派与安卓驱动的交互式生成艺术
- 将 MIDI 键盘变身智能钢琴导师:Arduino + LED 灯带 + MuseScore
- 精通卧式铣削:大幅提升生产效率
- 动力泵与正位移泵本质差异深度解析:机理、性能边界与选型指南
- 掌握直角三角形三角学:核心概念与公式
- 掌握三角学:任意三角形的正弦定理与余弦定理
- 可编程逻辑控制器(PLC):工业系统的现代数字控制
- G.AL® C330 Dynamic:精密应用用高强度铝合金
- G.AL® C210 Dynamic:优质中强度铝板,卓越均匀性与极低内应力
- C语言动态内存分配完全指南:malloc、calloc、realloc 与 free
- C++动态内存管理精要:栈与堆、new/delete、数组与对象分配实战
- 探索 FPGA:应用、优势与 VHDL 入门指南