亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

DIY 节日影子剧场:Arduino 与可寻址 LED 灯条打造光影秀

零部件与材料

所需工具

软件与服务

项目概览

DIY 节日影子剧场:Arduino 与可寻址 LED 灯条打造光影秀

利用 Arduino 101 内置蓝牙,通过 Blynk App 远程控制地址可寻址 LED 灯条,配合 KT 板和卡纸剪影,制作手机可控的动画影子剧场。电子元件无破坏性使用,可拆解复用。

工作原理

DIY 节日影子剧场:Arduino 与可寻址 LED 灯条打造光影秀

一条 LED 灯条缠绕在剧场中央的 KT 板上。底部 LED 依次点亮,透过针孔投射动态阴影(如飘雪);中部 LED 导光进顶部建筑剪影;末端最后一颗 LED 照亮全场,投射主阴影。

DIY 节日影子剧场:Arduino 与可寻址 LED 灯条打造光影秀

Blynk App 可控制建筑灯光颜色、开启闪烁壁炉火光、调节主阴影亮度。

第一部分:电子组装

  1. 剥离灯条末端引线:从灯条末端剪下约 1cm,剥线。
  2. 焊接信号线排针:将升压模块附带的弯脚排针掰直,焊接到绿/黄信号线末端,方便插入 Arduino 101 引脚。
  3. 接线升压模块:红线接升压模块 VIN,GND 和 VOUT 焊直排针。
  4. 连接 DC 插座:
    • 电池盒引线接公头 DC 插座:红接 +,黑接 -。
    • 灯条输入端引线接母头 DC 插座:黄接 -,红接 +。
  5. 连接 Arduino 101:
    • 绿线(数据)接 Pin 6
    • 黄线(地)接 13 号脚旁 GND
    • 升压模块 GND 接 GND,VOUT 接 Vin (切勿反接,会冒烟损坏!)
DIY 节日影子剧场:Arduino 与可寻址 LED 灯条打造光影秀
DIY 节日影子剧场:Arduino 与可寻址 LED 灯条打造光影秀

第二部分:KT 板舞台组装

  1. 打印 KT 板剪纸模板(4 张 A4 纸)和卡纸模板(4 张卡纸)。
  2. 按模板裁剪 KT 板部件。可将模板贴在 KT 板上,用美工刀轻划转印轮廓。
  3. 组装灯条支架:首颗 LED 粘在底部,按图缠绕 3 圈,尾部自由,顶部固定。
  4. 编号 LED:可寻址 LED 需知晓索引。缝隙下方 LED 用于动画(如示例 0,1,2,20,21,22,40,41,42),两颗 LED 照亮建筑(23 号照后屋,25 号模拟前屋火光),末端 LED (59) 为主阴影光源。按你的缠绕方式数清编号并记录,代码中需修改对应数值。
  5. 将支架热熔胶固定在底板中央,长条灯带大致居中。
  6. 粘贴弧形侧板。
  7. 安装遮光挡板和顶板:大挡板靠近支架折痕,小挡板在上方,中间至少留 1 颗 LED。顶板对齐底板粘牢。
  8. 将灯条尾端最后一颗 LED 粘在前顶边,作为主阴影光源。
DIY 节日影子剧场:Arduino 与可寻址 LED 灯条打造光影秀

第三部分:Arduino 101 编程与 Blynk 配置

  1. USB 连接 Arduino 101,接好灯条、电池盒、Arduino(电池盒开关先关)。
  2. 安装 Arduino IDE、Intel Curie 核心、Adafruit NeoPixel 库、Blynk 库。新手先跑基础例程验证硬件。
  3. 打开示例代码,按你记录的 LED 编号修改数组:
// 雪花动画 LED 编号
int pos[] = {0, 1, 2, 20, 21, 22, 40, 41, 42};
// 动画像素数量
int numLeds = 9;
// 末端主阴影 LED(60 灯条为 59)
int shadowPixel = 59;
// 后屋照明 LED(在两挡板之间)
int lightHousePixel = 23;
// 前屋火光 LED(小挡板前)
int firePixel = 24;

编译上传。拔 USB,打开电池开关,应见主阴影亮起、动画 LED 依序闪烁,建筑/火光 LED 待 Blynk 控制。

  1. 配置 Blynk App:
    • 手机安装 Blynk,点击右上角扫码,扫描项目二维码自动加载界面。
    • 或手动建立:BLE 组件 + 3 个滑块(输出 0-100 到 V0、V1、V2)。
  2. 点击 BLE 组件连接 "ShadowTheatre",右上角播放箭头即可控制。手机息屏后可能需重连。
DIY 节日影子剧场:Arduino 与可寻址 LED 灯条打造光影秀

第四部分:卡纸剪影、建筑与收尾

  1. 用美工刀剪背景剪影(勤换刀片,我换了 3 次)。
  2. 剪建筑件,背面粘贴(印面朝后),热熔胶组装。
  3. 将建筑固定于舞台,封堵缝隙防漏光。
  4. 折叠剪影两侧,底部粘贴舞台后缘(印面朝外)。
  5. 剪刻雪景投影片(针孔/牙签孔/精细镂空),粘贴弧形边缘形成投影面。
  6. 粘贴左侧和前侧板。右侧板用胶带松贴,方便开关电池盒。
DIY 节日影子剧场:Arduino 与可寻址 LED 灯条打造光影秀

大功告成! 找暗处靠墙测试。开机即见场景阴影与飘雪。用 Blynk 控制主光、建筑灯光、火光。

代码

/* Copyright (c) 2016 Intel Corporation. All rights reserved. See license notice at end of file. */
/////////////////////// 请修改以下变量以匹配你的影子剧场 //////////////////////////////////
// 雪花动画 LED 编号
int pos[] = {0, 1, 2, 20, 21, 22, 40, 41, 42};
int numLeds = 9;
int shadowPixel = 59;
int lightHousePixel = 23;
int firePixel = 24;
////////////////////////////////////////////////////////////////////////////////////////////
#include <Adafruit_NeoPixel.h>
#include <BlynkSimpleCurieBLE.h>
#include <CurieBLE.h>
#define PIN 6
int v0 = 0, v1 = 0, v2 = 0;
int fadeup = 0, fadedown = 0;
int firetimer = 0, fireinterval = 50, flicker = 0;
unsigned long lightcounter = 0;
int stp = 0, stpOld = 0;
unsigned long timer = 0;
int interval = 0;
char auth[] = "YourAuthToken";
BLEPeripheral blePeripheral;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  delay(1000);
  timer = millis();
  strip.begin();
  strip.show();
  blePeripheral.setLocalName("ShadowTheatre");
  blePeripheral.setDeviceName("ShadowTheatre");
  blePeripheral.setAppearance(384);
  Blynk.begin(auth, blePeripheral);
  blePeripheral.begin();
  interval = 350;
}

void loop() {
  Blynk.run();
  blePeripheral.poll();
  // 主阴影光,受 V2 控制
  strip.setPixelColor(shadowPixel, 200 - v2, 160 - v2, 160 - v2);
  // 火光闪烁
  if ((millis() - firetimer) > fireinterval) {
    firetimer = millis();
    flicker = random(0, 40);
  }
  if (v0 > 1) {
    strip.setPixelColor(firePixel, 80 + v0 + flicker, v0 + flicker, 0);
  } else {
    strip.setPixelColor(firePixel, 0, 0, 0);
  }
  // 后屋灯光
  if (v1 > 1) {
    strip.setPixelColor(lightHousePixel, 200 - v1, v1, 0);
  } else {
    strip.setPixelColor(lightHousePixel, 0, 0, 0);
  }
  // 雪花动画
  if ((millis() - timer) > interval) {
    stpOld = stp;
    timer = millis();
    lightcounter++;
    stp = (lightcounter % numLeds);
    fadeup = 0;
    fadedown = 170;
  }
  fadeup += 2; fadeup = constrain(fadeup, 0, 170);
  fadedown -= 2; fadedown = constrain(fadedown, 0, 170);
  for (int i = 0; i < numLeds; i++) strip.setPixelColor(pos[i], 0, 0, 0);
  strip.setPixelColor(pos[stp], fadeup, fadeup, fadeup);
  strip.setPixelColor(pos[stpOld], fadedown, fadedown, fadedown);
  strip.show();
}

BLYNK_WRITE(V0) { v0 = param.asInt(); } // 壁炉滑块
BLYNK_WRITE(V1) { v1 = param.asInt(); } // 后屋灯光滑块
BLYNK_WRITE(V2) { v2 = param.asInt(); } // 主阴影滑块

原理图与模板

制造工艺

  1. 节日灯饰的演变与工艺:从古老传统到现代工程
  2. 发光二极管:从诞生到百年寿命
  3. Arduino复刻“棺材舞”旋律:蜂鸣器+三色LED灯光秀完整教程
  4. DIY Arduino USB 游戏手柄 — 自制高性能游戏手柄
  5. DIY 云朵发光服装 — LED 灯带 + Arduino Nano + SparkFun 元件
  6. 用 Arduino Mega 制作惊艳的 5×5×5 LED 光立方
  7. Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
  8. 智能 Arduino 水杯:实时监测饮水量与智能提醒
  9. 声控 8 路 LED 灯光秀:Arduino 入门项目
  10. 从零构建智能 Arduino 四足机器人:完整指南
  11. Arduino RGB LED调色器:三电位器混色入门项目
  12. 智能手语手套:柔性传感器 + 加速度计 + 蓝牙将手势转文字/语音