假日皮影戏
组件和用品
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要的工具和机器
![]() |
| |||
![]() |
| |||
| ||||
| ||||
| ||||
| ||||
|
应用和在线服务
![]() |
| |||
![]() |
| |||
|
关于这个项目
概览

该项目使用 Arduino 101、一条可寻址 LED、泡沫芯和卡片纸来创建一个电话控制的动画皮影剧院。电子设备以非破坏性方式使用,因此您以后可以轻松地将它们用于另一个项目。这是一个方便的 Sparkfun 愿望清单,其中包含 99% 的电子产品。

工作原理:


一条可寻址的 LED 灯带包裹在皮影剧院中间的一块泡沫芯上。靠近底部的灯光依次缓慢发射并通过针孔照射以创建动画阴影。进一步向上的灯光被引导到顶部的建筑物中,灯带上的最后一个 LED 用于照亮整个场景,形成主阴影。

Arduino 101 内置了蓝牙无线电,我使用一个名为 Blynk 的快速原型制作应用程序来远程控制场景。在示例代码中,您可以控制建筑物中的颜色,打开闪烁的火,并控制主阴影灯的亮度。
第一部分:设置电子设备
第 1 步
从灯的末端切割约 1 厘米,从 LED 灯带收集末端线束。剥去电线末端。


第 2 步
拆开稳压器随附的弯曲插头引脚,并将其中两个焊接到绿色和黄色电线的末端。这将使您轻松地将它们插入 Arduino 101 的引脚。

第 3 步
接下来将红线焊接到稳压器上的 VIN 端子,并将两个直头焊接到 GND 和 VOUT 引脚,如图所示。

第 4 步
现在连接桶形插孔适配器。首先剥去来自电池盒的电线末端,然后将它们安装在公桶插孔的端子中并用螺丝刀拧紧。红色到 (+) 端,黑色到 (-) 端。

接下来将母桶插孔适配器连接到 LED 灯条开头的松散电线上。 YELLOW 连接到 (-) 端子,RED 连接到 (+)。

步骤 5
现在将线束连接到 Arduino 101。绿色线连接到 PIN 6,黄色线连接到 #13 附近的 GND 引脚。
使用稳压器上的两个插头引脚,GND 连接到 GND,VOUT 连接到 Arduino 101 上的“Vin”引脚。不要误会!向后插入会导致异味和灼伤。我知道这个。


第二部分:组装泡沫芯台。
在普通打印纸(4 张)上打印泡沫芯图案,然后在卡片纸(4 张)上打印出卡片图案。
第一步
取出打印的泡沫芯图案页面,并用它们剪下您的泡沫芯件。您可以在泡沫芯上铺一个图案,然后用小刀轻轻勾勒轮廓,将线条转移过去。


第 2 步
切割完零件后,开始像这样组装 LED 灯条支架:

现在拿起你的 LED 灯条,用胶带或热胶将第一个 LED 连接到底部,然后如图所示包裹你的 LED。这个想法是保持 LED 灯条完好无损。它不需要是一个超紧的包裹。


包好三圈后,将尾端留空,并用胶带或热胶固定顶部。
第 3 步
这个 LED 灯带具有可寻址的 LED,这意味着您或多或少可以说,“嘿,你在中间,变红!”但是他们不会回答“嘿你”,所以你需要知道他们的号码。
折痕下方的 LED 将在皮影剧院的背面发光并用于动画。在下面的示例中,我的动画灯为 0、1、2、20、21、22、40、41、42。顶部的两个 LED 将照亮房屋。我使用 LED 23 照亮后屋,使用 25 来模拟前屋的火光。
计算您的 LED 并绘制一个对您有意义的简单参考图,以便您稍后可以在代码中输入适当的 LED 编号。 请记住从零开始的条带开头开始计数,因为计算机。

第 4 步
将 LED 支架向下粘在泡沫芯底部部件上。如图所示放置它,使宽条纹与底座大致纵向居中。


现在用热胶在末端添加弯曲的泡沫芯侧件,如图所示。

步骤 5
现在添加分光器 和泡沫芯顶片 .分光器可防止动画灯光溢出到房屋中,反之亦然。将最大的隔板靠近 LED 支架的折痕放置,然后将较小的隔板放在其上方,以便它们之间至少有一个 LED(见下图)。放置顶部部件 所以它与底座成方形,如下面的幻灯片所示,并用热胶固定。





第 6 步
用热胶将 LED 灯条的末端连接到前顶部边缘,这样灯串中的最后一个 LED 就可以照亮场景。这是主要的阴影 LED。


第三部分:对 Arduino 101 进行编程,并设置 Blynk
将 USB 编程电缆连接到 Arduino 101,并将 LED 灯条、电池组和 Arduino 101 连接在一起(将电池组上的电源开关保持为“关闭”。)
你需要 Arduino IDE 安装在您的计算机上, 使用 Intel Curie Core(请参阅 Arduino 101 入门。)您还需要安装 Adafruit Neopixel 库 和 Blynk 库 。
如果您不熟悉 Arduino,最好运行一些基本示例草图以确保一切正常。
第 1 步
安装 Blynk 应用 在您的手机上。
Blynk 是快速构建概念验证和远程控制 Arduino 101 的绝佳工具。BLE 支持仍然存在一些错误,但 Blynk 是迄今为止我发现的通过手机控制任何 Arduino 101 项目的最快方法。
第 2 步
在您的 Arduino IDE 中加载示例代码,并在必要时使用您之前制作的地图更改 LED 像素数。
该程序通过“pos[]”数组中的 LED 数字进行动画处理,以创建下雪的错觉。如果需要,请更改这些数字以匹配您的设置(动画 LED 位于 LED 支架上的折痕下方。)按照您希望它们发光的顺序排列这些数字。灯光通过针孔投射成“雪”,所以从下到上的照明会让雪看起来像往下掉,从左到右会让雪看起来像从右到左吹。
//#snow 动画灯 int pos[] ={0, 1, 2, 20, 21, 22, 40, 41, 42};
接下来设置动画的像素数量
//#上面的数组中有多少动画像素? int numLeds =9;
然后设置在场景上闪耀的链末端的像素(在 60 像素的条带上,这是像素 #59。)
//#main 链末端的阴影投射 LED。 int shadowPixel =59;
为将照亮后屋的灯选择一个像素。这个像素应该在两个分光器之间。
//#pixel for the back houseint lightHousePixel =23;
最后,将要照射到前屋的像素数设置为“火像素”。这个像素应该就在较小的分光器前面。
//#Pixel 用于前房闪烁的火光 int firePixel =24;
当上面的代码根据需要更改后,您可以编译并上传到您的 Arduino 101。 代码上传成功后,断开 USB 电缆并将电池组上的电源开关打开。您应该看到 shadowPixel 打开,动画像素将依次点亮。房屋和火像素将关闭,直到您使用 Blynk 控制它们。
第 3 步
加载您的 Blynk 应用程序:
在手机上打开 Blynk 应用程序,然后按右上角附近的“扫描”按钮。扫描这个二维码,控制器界面应该会自动加载,你就完成了。

加载后,界面应该是这样的:

如果您更喜欢手动构建您的 Blynk 界面而不是扫描上面的代码,请从一个 BLE 小部件和 3 个设置为输出 0-100 到 VO、V1 和 V2 的滑块开始。
第 4 步
通过 BLE 连接到您的 Arduino 101 .点击 BLE 小部件,如果您的 Arduino 101 已开机,您应该会看到“ShadowTheater”。连接,然后点击右上角的“播放”箭头图标来控制您的项目。手机进入睡眠状态后,您可能需要重新连接。
好的,所有困难的事情都完成了,现在开始制作!您可以关闭所有内容,直到最终揭晓。
第四部分:卡片轮廓、建筑和最后润色
第 1 步
找到四张打印好的卡片纸。使用爱好刀和新刀片,剪下背景轮廓。经常更换刀片!用钝刀片切割是非常令人沮丧的。我改变了刀片 3 次切出这个轮廓。





第 2 步
剪下房子的碎片并用热胶固定背面。印刷面应朝后,因此您看不到正面的任何墨水。滚动浏览下面的照片。





第 3 步
将房屋添加到舞台上。您可以使用热胶或胶带。尝试关闭所有缝隙,使光线进入房屋,但不会从四周溢出。



第 4 步
现在折叠剪影片的侧面,并用热胶将底部连接到舞台的后边缘。 (将印刷面背向观看者。)


步骤 5
剪下雪景,投射到皮影戏后面的墙上。您可以使用大头针或牙签,或剪出复杂的形状。纸张完成后,将其热粘到弯曲的边缘以创建投影表面。


第 6 步
用热胶粘住左侧和前板。


用胶带松散地粘上右侧板,这样您仍然可以从内部打开和关闭电池盒的电源。

一切都完成了! 找一个附近有墙的黑暗区域试试看!当您第一次打开电源时,皮影剧院应投下场景阴影和飘落的雪花。使用 Blynk 应用程序,您可以控制主灯和建筑物中的灯。
代码
- Shadow Theatre Arduino Sketch
Shadow Theater Arduino SketchArduino
此草图使用 Adafruit NeoPixel 库和 Blynk 库。它让您可以远程控制可寻址 LED 串中的 LED,以在影子剧院中创建效果。/* 版权所有 (c) 2016 英特尔公司。版权所有。请参阅文件末尾的许可通知。*//////////////////////这些是您应该更改以匹配您的影剧院设置的变量//// //////////////////////////////////// 雪地动画lightsint pos[] ={0, 1, 2、20、21、22、40、41、42}; // 哪些 LED 可用于动画?它们将按从左到右的顺序调用。int numLeds =9; //上面的数组中有多少动画像素?int shadowPixel =59;//// strand末端的主要阴影投射LED.int lightHousePixel =23; //后屋灯的像素int firePixel =24; //为前屋闪烁火光的像素。////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// //#include#include #include #define PIN 6int v0 =0; //保存来自 Blynkint 的传入值的变量 v1 =0;int v2 =0;int fakeup =0; //灯光动画平滑的变量intfadedown =0;int firetimer =0; /// 使火闪烁的变量int fireinterval =50;int flicker =0;unsigned long lightcounter =0; //用于通过动画灯计数的变量foreverint stp =0; ///动画的光步骤。一个是当前灯打开,一个是旧灯关闭。int stpOld =0;unsigned long timer =0;int interval =0;char auth[] ="YourAuthToken"; /// Blynk 当前未将 Auth 令牌用于 BLE。如果以后开启,您可以从您的 Blynk 应用程序中获取您的身份验证令牌并将其粘贴到 "".BLEPeripheral blePeripheral; ///设置BLE连接Adafruit_NeoPixel strip =Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800); //// 设置灯带。如果您的 LED 灯条多于或少于 60 个像素,请更改第一个数字以匹配您的 strip.void setup() { delay(1000);计时器 =毫秒(); strip.begin();带.show(); // 将所有像素初始化为“关闭” blePeripheral.setLocalName("ShadowTheatre"); blePeripheral.setDeviceName("ShadowTheatre"); blePeripheral.setAppearance(384); Blynk.begin(auth, blePeripheral); blePeripheral.begin();间隔 =350; //雪动画的时间间隔为350ms}void loop() { Blynk.run(); //用于实时控制的blynk东西blePeripheral.poll(); ////////打开阴影像素并使用Blynk strip.setPixelColor(shadowPixel, 200 - v2, 160 - v2, 160 - v2); //打开阴影灯,v2(从 Blynk 应用程序发送)改变了灯光。 //fire if ((millis() - firetimer)> fireinterval) { firetimer =millis();闪烁 =随机 (0, 40); //当设定的时间间隔过去后,在0到40之间随机改变火焰的亮度。 } if (v0> 1) { strip.setPixelColor(firePixel, 80 + v0 + flicker, v0 + flicker, 0); // 火 =Blink 中滑块的亮度,+ 闪烁值,向红色加权 } else { strip.setPixelColor(firePixel, 0, 0, 0); //仅当 Blynk 滑块> 0 时才打开火。 } //houselights if (v1> 1) { strip.setPixelColor(lightHousePixel, 200 - v1, v1, 0); /// 如果 Blynk 中的 Houselights Slider>0,则控制后屋中的房屋灯。否则关掉。 } else { strip.setPixelColor(lightHousePixel, 0, 0, 0); } //雪景动画 if ((millis() - timer)> interval) { //每次间隔过去,向前移动一步并重置淡入淡出 stpOld =stp;计时器 =毫秒();光计数器++; stp =(lightcounter % numLeds); /// 从零到numLeds-1fadeup =0一遍又一遍地计数; //每次间隔经过fadedown =170时重置淡入淡出值; } 淡入淡出 +=2;淡入淡出 =约束(淡入淡出,0, 170);淡入淡出-=2;淡入淡出 =约束(淡入淡出,0, 170); for (int i =0; i
示意图
将这些打印在普通打印纸上,用作切割泡沫芯的指南。您可以将它们放在上面,然后用爱好刀描摹以将图案转移。在 8.5 x 11" 卡片纸(4 张)上打印。这些可以制作房屋、侧面和阴影剪影如果您有幸获得的话对于激光切割机或乙烯基切割机,您可以使用此图案来切割卡片纸。 30bn6Le68V1Lpp2spRMw.svg制造工艺