使用 Arduino Nano 和 NeoPixel 打造动态跑马灯 LED 照明
零部件与材料
| Arduino Nano R3 | ×1 |
| NeoPixel LED 灯带 | ×1 |
软件与在线服务
- Arduino IDE
项目简介
简单易制的动态跑马灯照明
本教程将指导你为街机柜或其他项目添加动态灯光效果。适用于跑马灯背光及多种装饰用途。
所需材料:Arduino Nano(或兼容板)、一条 NeoPixel 灯带、三根导线。
制作步骤
请观看下方视频了解完整制作过程:
快速接线指南
硬件连接: 从 Arduino Nano 焊接三根导线至 NeoPixel 灯带:5V 电源、数字信号线(本例使用 Arduino 的 D2 引脚)、地线。
小贴士: 使用热缩管捆绑导线,特别是灯带连接处(确保焊点被覆盖),可有效防止焊点脱落。



代码配置: 在草图中设置连接灯带的 LED 数量,上传至 Arduino 并测试。本例使用了白色的“流动”、闪烁和呼吸动画。你可以修改代码实现各种动画及多色效果,或仅作为简单背光使用。

结构组装: 裁剪两块适合柜体的纸板。一块作为背板粘贴 NeoPixel 灯带,另一块平铺于跑马灯底部后方,避免光线直射向下。随后修剪边缘使其完美贴合。

在纸板上贴布基胶带使其变黑,将灯带粘贴固定,导线和 Nano 板用胶带固定在纸板背面。



将两部分装入柜体,用 USB 线将 Nano 连接至 5V 电源(本例接入树莓派 USB 口)。

装回原厂跑马灯面板或自制面板。本例设计简单,打印相纸裁剪适配。
进阶建议: 若找专业印刷公司将设计印在透明胶片上,效果将更佳。

所需库
- Adafruit NeoPixel 库
许可声明
部分代码参考网络资源,致敬原作者。代码仅供个人非商业用途。联系方式:ericBcreator@gmail.com
源代码
/* **********************************************************************
* 跑马灯 Neopixel 照明 - by ericBcreator
* 适用于(街机)跑马灯的简单脚本
**********************************************************************
* 最后更新 20181021 by ericBcreator
* 灵感来源:sandyjmacdonald 文章
* https://sandyjmacdonald.github.io/2015/12/02/picade-errata/
* 组件:
* - Neopixel 灯带
* - Arduino Nano
* 代码免费供个人使用,禁止商用。请保留此头部信息。
* 联系:ericBcreator@gmail.com
********************************************************************** */
#include <Adafruit_NeoPixel.h>
#define PIN 2 // 灯带数据引脚
// 变量初始化
int numOfLeds = 11; // 灯带 LED 数量
int minBrightness = 80; // 最小亮度 (0-255)
int maxBrightness = 255; // 最大亮度 (0-255)
int walkingLedsDelay = 250; // 流动动画延时(ms)
int flashDelay = 250; // 闪烁延时(ms)
int numOfFlashLoops = 3; // 闪烁循环次数
int numOfPulseLoops = 10; // 呼吸循环次数
int pulseDelay = 20; // 呼吸渐变延时(ms)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(numOfLeds, PIN);
void setup() {
strip.begin();
}
void loop() {
walkingLeds(); // 流动动画
flashLeds(); // 闪烁动画
for (int i = 0; i < numOfPulseLoops; i++) {
pulseBrightness(); // 呼吸动画
}
}
void walkingLeds() {
setLedColorsToZero();
strip.setBrightness(maxBrightness);
strip.show();
for (int x = numOfLeds; x > 0; x--) {
strip.setPixelColor(x, strip.Color(255, 255, 255));
strip.show();
delay(walkingLedsDelay);
strip.setPixelColor(x, 0);
strip.show();
}
}
void flashLeds() {
setLedColors();
for (int i = 0; i < numOfFlashLoops; i++) {
strip.setBrightness(maxBrightness);
strip.show();
delay(flashDelay);
strip.setBrightness(minBrightness);
strip.show();
delay(flashDelay);
}
}
void pulseBrightness() {
setLedColors();
for (int i = minBrightness; i < maxBrightness; i++) {
strip.setBrightness(i);
strip.show();
delay(pulseDelay);
}
for (int i = maxBrightness; i > minBrightness; i--) {
strip.setBrightness(i);
strip.show();
delay(pulseDelay);
}
}
void setLedColors() {
for (int x = 0; x < numOfLeds; x++)
strip.setPixelColor(x, strip.Color(255, 255, 255));
}
void setLedColorsToZero() {
for (int x = 0; x < numOfLeds; x++)
strip.setPixelColor(x, strip.Color(0, 0, 0));
}
原理图

制造工艺
- 打造低成本家庭无线传感器网络:Arduino + 树莓派 + Xively 物联网平台
- Arduino与树莓派构建互联网控制视频流机器人完整指南
- 用 Alexa 控制吊扇:分步指南
- Arduino Cloud 集成:随时随地监控家中温度
- 通过 Arduino IoT Cloud 用 Alexa 控制电视:分步指南
- Arduino OpenTherm 智能供暖控制:实现中央供暖系统的监控与自动化
- ThimbleKrox:基于 Arduino Micro 与 MPU-6050 的指戴式鼠标控制器
- Arduino Nano 与 WS2812 灯带打造 1D 乒乓球游戏——分步 DIY 教程
- 1Sheeld + Arduino 手机无线控制家庭灯光系统
- 解锁高阶自动化:为何3D视觉是您项目的必选项?
- 掌握电气设计:用 E3.schematic 功能优化项目
- Arduino MKR1000 开发板详解:引脚定义、Wi-Fi/加密芯片、供电方式与上手指南