当前位置:网站首页>Arduino 控制的 RGB LED 无限镜
Arduino 控制的 RGB LED 无限镜
2022-07-05 05:51:00 【acktomas】
Arduino 控制的 RGB LED 无限镜
2013 年 9 月 17 日更新:感谢在Arduino 竞赛中为这个项目投票的所有人(我是十个“二等奖”获得者之一)!如果您想使用可寻址 LED 灯条而不是模拟灯条来尝试这个项目,请查看Rainbow Jar项目(也是 Arduino 竞赛的获胜者)。
这是我对两个经典项目的组合:使用 Arduino 的 RGB LED 控制和无限镜子。它是一个 RGB LED 无限镜,可让您在可调节速度的褪色模式和直接控制模式之间切换,您可以在其中单独设置红色、绿色和蓝色 LED 亮度级别。这个特定项目的主要灵感来自这个无限镜 Instructable和Adafruit 的 RGB LED 灯条教程,但在这两个项目中还有更多优质资源。
如果您愿意,可以制作一个非常简单、便宜的无限镜(只需在 Instructables 中搜索“Infinity Mirror”,您就会找到一些),或者疯狂地花费数百美元(如果不是数千美元)(在 YouTube 上搜索“infinity mirror table”,你会明白的)。
材料:电子产品
2016 年 2 月更新:Jameco Electronics现已提供包含该项目所有电子材料的套件。请注意,该套件不包括用于构建镜框的材料,因此您仍需要单独购买这些材料(见下文)。如本页底部所述,我通过销售此套件赚取佣金。
带有迷你面包板和跳线的 Arduino UNO R3。。
(可选):Arduino/面包板支架。 在 Thingiverse 上找到的 这个很酷的简约设计。
[1 米 RGB LED 灯条。SparkFun 带有一个数字 RGB LED 灯条,该灯条具有可单独寻址的 LED(如果您想一次向灯条发送一个 LED 的光脉冲,或者有其他模式)。两条条都可以剪裁成适合您的镜子的长度。
四个10K 电位器。
三个N 沟道 MOSFET。
22 AWG 连接线(黑色)。喜欢分别用红色和黑色对 V+ 和接地连接进行颜色编码。可以从 SparkFun 获得更小的 25 英尺卷。
22 AWG 连接线(红色)。与上面的注释相同,此处滚动较小。
12V/5A 直流电源。我使用的 RGB LED 灯条需要 12V,根据[数据表](https://www.sparkfun.com/datasheets/Components/LED/FLB6 5060RGB(300) Waterproof FLEX STRIP.pdf),每个 3-LED 段(灯条可以切割成的最小单位)消耗 60mA。因此,在整个灯带有 60 个 LED 时,在全亮度下绝对最大值为 1.2A。我有一个 12V 充电器。
Adafruit和SparkFun两者都带有更小、更便宜的 12V 电源(分别为 1A 和 600mA),根据镜子的大小和它将使用多少个 LED,可能会很好地满足您的需求。
材料:构建镜子
重要:构建这个镜子需要三个主要部分:普通镜子、框架和单向镜子。首先,如果你能找到一个硬纸板/纸浆盖和一个可以紧贴在里面的普通镜子,那是最简单的——我买的零件不能完美地结合在一起,所以我不得不使用一种解决方法(参见步骤 6)。其次,根据您可用的工具,切割亚克力可能会很痛苦,因此请相应地进行计划(参见步骤 9 和 10)。
关于 LED 灯条还有一个重要的考虑因素,它不能被切割成任何长度 - 它必须被切割成 3-LED 段的倍数,长度只有不到 2 英寸 - 所以你想要内部周边你的镜框是那个长度的倍数。因此,我将链接到我用来构建镜子的部件,但您仍然可以按照这些说明构建不同尺寸或形状的镜子。
- 9" 直径圆形镜子。我买了这套[7 面镜子,目的是制作一些更小的无限远镜子。
- 8 英寸、9 英寸和 10 英寸直径的圆形纸盒。重要的是 - 我买这些是希望 9 英寸直径的镜子能紧贴在 9 英寸盖子或盒子本身内(因为我不能’在亚马逊上找不到单独的盒子出售)。它没有。9" 的盖子太小了,而 10" 的盒子太大了。所以,我把 9" 盖子的顶部剪掉了。 ,并且只使用轮辋。如果您跳过并查看第 6 步中的图片,这将是有道理的。重点是,理想情况下,您应该使用紧贴在纸浆盖或盒子内的镜子。
- 1/8" 厚 12"x12" 透明亚克力(有机玻璃)板。可购买。如果您可以使用激光切割机,丙烯酸非常容易切割。我没有,所以我尝试使用拼图(第 9 步)和记分法(第 10 步)。两者都工作得相当好,但会导致一些锯齿状的边缘,事后看来,矩形镜子比圆形镜子效果更好。如果你想制作一个稍微小一点的镜子,McMaster 出售预切割的 6" 直径圆圈。我没有为更大的预切割圆圈货比三家,但你也许能找到它们。
- 镜面窗户薄膜。我从亚马逊订购[了这些东西。
- 黑色油漆。我在买了一罐普通的黑色喷漆。
- 可选:如果你想变得非常花哨,可以订购一个定制尺寸的单向镜子,而不是把窗户反光膜贴在一块有机玻璃上。这可能会在您的最终产品中为您提供更高的光学质量。
工具
- 烙铁。我有[一个来自 SparkFun 的可变温度。SparkFun 产品页面上写着“您需要在自己的电线上进行焊接。”但是我的条带到达时已经焊接了所有四根电线。即便如此,将(绞合)线的末端推入面包板可能会很痛苦,因此我建议在小段实芯线上进行焊接以使其更容易。
- 无铅焊料。
- 剥线钳,如果您还没有一对可以剥 22 AWG 的剥线钳。同样,如果需要,您可以在没有这些的情况下挤过去,但我敢打赌大多数阅读本文的人都有剥线钳。
- 迷你尖嘴钳,如果您像我一样笨拙且讨厌用手指处理微小的面包板组件。
- 电钻(见第 6 步——你可能只需要一把锋利的刀就可以逃脱)
- 强力胶
- 电工胶带
明白了吗?是时候开始建造了!
第1步:无限镜子如何工作?
好了,差不多是时候开始构建了。首先,我想先发制人地解决另一个常见的评论:这些东西实际上是如何工作的?
毫不奇怪,没有魔法。秘密在于,无限远镜实际上包含两个具有不同透射率和反射率的镜子。对于所有实际意图和目的,我们在日常生活中处理的镜子是100%反射的(从技术上讲,少量的光也会被吸收,但我们可以暂时忽略这一点)。这是无限远镜子“背面”的常规镜子(在上图的左侧)。然而,有色窗膜(在上图的右侧)仅反射大约一半的光线*。这意味着,当您将LED夹在两面镜子之间时,一些光线会通过前镜逸出并进入您的眼睛。其余的从后视镜反弹回来,然后再次进入前视镜,这个过程继续到无穷大 - 因此得名。但是,由于每次都有一点点光线逸出,你看到的每个连续的幻觉LED看起来都会变暗一点,直到它们逐渐消失 - 你实际上看不到无限多的LED。
请注意,这不起作用,因为窗口色调“只允许光线在一个方向上通过”,这是一个常见的误解。为了使幻觉正常工作,观察者所在的前镜的一侧(外部世界)必须比带有LED的一侧(无限远镜内)暗得多。这与你在犯罪剧/电影中看到的效果相同,有人被关在一个审讯室里,墙上有一面镜子,但镜子的另一边有人观察,好像它只是一扇窗户。只有当审讯室光线充足,观察室黑暗时,这才有效。
*反射率/透射率的确切百分比可能会因您购买的种类而异 - 不同级别的反射率和透射率实际上在不同状态下受到监管,用于车窗,如果您好奇,请谷歌一下。
添加提示提问评论下载
步骤 2:构建电路
在构建镜像之前,最好先构建、测试和调试电路。否则,如果你得到一个漂亮的,花哨的镜子只是为了扔掉开关并发现某些东西不起作用,那将是非常可悲的。因此,首先让我们组装电路并测试LED灯条。如果您不熟悉电路并且不了解发生了什么,您可以(a)盲目地遵循指示,或者(b)展望下一步以解释电路的工作原理。
如果您有使用试验板的经验,则可以根据上面的第三个试验板图或直接从电路图组装电路。对于新手,我将其分为三个步骤,希望使事情不那么压倒性 - 对应于上面的前三个图表:
1)用三个MOSFET,四个电位计,SPDT开关和桶形插孔适配器填充面包板。我在上图中使这些部分“透明”,以便您可以确切地看到它们的引脚的位置*。
2)添加电线以连接到电源和接地导轨。我在这里用红色和黑色对这些进行了颜色编码,但请记住,如果您只有一个多色跳线套件并且没有红色和黑色连接线,则可以使用所需的任何颜色。请注意*,其中一个试验板导轨如何从桶形插孔连接到+12V电源(通过Vin将电源馈送到Arduino),另一个连接到Arduino的+5V电源引脚,但它们共享一个共同点*。无论你做什么,都不要同时短路+12V和+5V电源!
3) 添加电线以连接到 Arduino 的输入和输出,以及要连接到 LED 灯条的电线(如果您的灯带带有预焊接的电线,请使用这些电线)**。同样,我在这里对各自的红色,绿色和蓝色电线进行了颜色编码,但您执行此操作的能力将取决于您可用的电线。
*我开始在Fritzing中制作这张图,但对MOSFET和电位计等组件在面包板视图模式下占用的大量空间感到沮丧(它们提供准3D视图而不是“自上而下”视图,因此占用的空间比现实生活中多得多,并且掩盖了面包板上的其他东西)。因此,我截取了Arduino和面包板的屏幕截图,并在Powerpoint中绘制了它们。
** 如果您的 LED 灯带确实带有预焊接电线,请小心颜色编码。SparkFun的产品页面指出,蓝色和绿色的电线是切换的,这可能会令人讨厌,但不会造成任何伤害。我的灯带带有一根连接到V +的黑线,在LED灯带上反转极性可能是个坏消息。我想我理解不想使用两根红线(一根用于V+,一根用于红色LED),但我希望他们使用黑色以外的其他东西来表示V +。
添加提示提问评论下载
步骤3:电路如何工作?
这是对电路如何工作以及组件用途的粗略解释。经验丰富的人可以跳过此步骤,但如果您好奇,请继续阅读。我没有时间写一整章关于电路的介绍性章节,所以我试图在可能的情况下提供相关的链接。
桶形插孔适配器为试验板提供+12V电源。这是为LED灯条供电所必需的,并且还通过其Vin引脚为Arduino供电*。* 从技术上讲,Arduino的内置桶形插头将接受+12V电源,然后您可以通过Vin引脚访问该电源,但是LED会消耗大量电流 - 超过您希望通过Arduino板运行的电流。这样,电流就会“分裂”——Arduino只吸收它需要的东西,而高电流通过试验板直接进入LED。特别感谢Adafruit支持论坛帮助我解决这个问题。
SPDT开关只是一个开关,用于选择程序所处的“模式”。代码的细节将在下一步中解释,但实质上它只是在通过不同颜色旋转的“褪色”模式和直接控制模式之间切换,您可以在其中控制单个红色,绿色和蓝色LED亮度。开关的中间引脚连接到Arduino的数字输入引脚之一,外部两个引脚连接到+5V和地。因此,根据开关的翻转方式,程序使用digitalRead()函数读取数字高点或低点并相应地起作用(注意:SPDT代表“单刀双掷”,关于开关的维基百科页面有一个很好的表格,总结了不同类型的开关,并附有图表)。
**电位计**是您“控制”的,具体取决于程序处于哪种模式。在独立控制模式下,三个电位计分别控制红色、绿色和蓝色 LED 的亮度。在褪色模式下,单个电位计控制衰落的速度。电位计有三个引脚。与开关一样,一个引脚连接到+5V,一个引脚连接到地。然而,与开关不同,旋转电位计会使中间引脚上的电压在0V和5V之间连续变化,而不仅仅是在两者之间切换。因此,电位计的中间引脚连接到Arduino的模拟输入。然后,使用analogRead()函数,Arduino将该电压转换为0到1023之间的数字,以便在程序中使用(请参阅下一步)。
MOSFET可能是电子学新手最难理解的部分。这些是驱动“高功率”设备(如电机,螺线管和LED灯条)所必需的,这些设备通常需要比Arduino所能提供的电流更多的电流。维基百科上关于这些的页面实际上相当密集,所以我将尝试在这里给出一个简化的解释。MOSFET有三个引脚,称为“栅极”(G)、“漏极”(D)和“源极”(S)。在最简单的形式中,MOSFET就像一个阀门,让电流从漏极流向源极。“闸门”控制这个阀门(想想打开和关闭一个阀门到花园软管),除了控制是电动的而不是机械的。从Arduino的一个输出引脚施加到栅极的电压使MOSFET“打开” - 允许高电流从漏极流向源极,而无需实际从Arduino吸收任何电流。如果从Arduino到栅极的电压为零,MOSFET将关闭并阻止电流流动。通过这种方式,您可以使用一个小小的Arduino控制巨大的电机和灯,只要您有一个足够大的外部电源来处理它。
我还应该提到脉宽调制(PWM)。这是一种用于使用Arduino控制LED亮度的常用技术。简而言之,Arduino的输出引脚是数字的,因此它们只能输出高电平或低电平(5V或0V)。它们不能连续改变电压来调节LED亮度或电机速度。相反,他们能做的是发出非常快速的脉冲(Arduino大约每秒500次),比人眼看到的要快得多。每个脉冲由一个HIGH段和一个LOW段组成,两者之间的相对比率决定了我们实际看到的“亮度”。0%高和100%低的脉冲看起来就像“关闭”。100%高和0%低将是“全亮度”,50%高/50%低将大约是半亮度。你明白了。在该电路中,PWM信号被发送到MOSFET,然后MOSFET控制通过LED的高电流,从而实现“衰落”效果和可调节的亮度。
步骤4:Arduino代码
将下面的Arduino代码复制并粘贴到新的草图中。我不会在这里写我自己的教程,所以如果你不知道如何创建/上传草图,请查看官方的Arduino - 入门页面。
注意:这可能不是最有效的代码!特别是,我不确定有没有更好的方法来连续监控衰落速度电位计,而无需一遍又一遍地复制和粘贴同一行代码,或者如果有办法在翻转开关时突破for循环(现在,如果您在褪色模式下切换到个人控制模式, 在完成当前淡入淡出周期之前,不会发生切换)。所以,我会把它扔在那里,作为对任何正在阅读这篇文章并希望发布更好代码的人的挑战。显然,我本质上是一名机械工程师,而不是一名程序员。
// Arduino code to control and RGB LED strip
// Uses a toggle switch to switch between color-fade mode
// and individual RGB control mode
// adapted from http://learn.adafruit.com/rgb-led-strips/example-code
const int RED = 9; // define digital output pins for individual red,
const int GREEN = 10; //green and blue channels
const int BLUE = 11;
const int POT1 = 0; // define analog input pins for three potentiometers
const int POT2 = 1;
const int POT3 = 2;
const int POT4 = 3;
const int BUTTON = 2; // define digital input pin for the switch
int val = 0; // stores the state of the switch input pin
int FADESPEED = 0; // initiate fade speed set by potentiometer
int r = 0; // initialize the red, green and blue values
int g = 0;
int b = 0;
void setup() {
pinMode(RED, OUTPUT); // define digital pins as outputs and inputs as needed
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
pinMode(BUTTON, INPUT);
}
void loop() {
val = digitalRead(BUTTON); // read the input value from the toggle switch
if (val == HIGH) {
// code for RGB color fade
/**
通过从第 4 个电位器读取模拟输入来设置淡入淡出速度
analogRead 将输出一个介于 0 和 1023 之间的数字,并且以毫秒为单位“延迟”,
因此您将在此处获得的最大延迟约为1/10 秒。除以不同的数字以更改最大淡入淡出时间。
*/
FADESPEED = analogRead(POT4) / 10; // set the fade speed by reading analog input from 4th potentiometer
// analogRead will output a number between 0 and 1023, and "delay"
// is in milliseconds, so the biggest delay you'll get here is about
// 1/10 of a second. Divide by a different number to change the max
// fade time.
// fade from blue to violet
for (r = 0; r < 256; r++) {
analogWrite(RED, r);
/**
持续检查淡入淡出速度,否则, 在完成一个完整的循环之前它不会更新。可能不是最有效的方法...
FADESPEED = analogRead(POT4) / 10; // check the fade speed continuously, otherwise
// it won't update until it's gone through a complete cycle.
// Probably not the most efficient way to do this...
delay(FADESPEED);
}
// fade from violet to red
for (b = 255; b > 0; b--) {
analogWrite(BLUE, b);
FADESPEED = analogRead(POT4) / 10;
delay(FADESPEED);
}
// fade from red to yellow
for (g = 0; g < 256; g++) {
analogWrite(GREEN, g);
FADESPEED = analogRead(POT4) / 10;
delay(FADESPEED);
}
// fade from yellow to green
for (r = 255; r > 0; r--) {
analogWrite(RED, r);
FADESPEED = analogRead(POT4) / 10;
delay(FADESPEED);
}
// fade from green to teal
for (b = 0; b < 256; b++) {
analogWrite(BLUE, b);
FADESPEED = analogRead(POT4) / 10;
delay(FADESPEED);
}
// fade from teal to blue
for (g = 255; g > 0; g--) {
analogWrite(GREEN, g);
FADESPEED = analogRead(POT4) / 10;
delay(FADESPEED);
}
}
else {
// code for individual RGB control with potentiometers
r = analogRead(POT3) / 4; // read values from the 3 potentiometers and divide by 4 to set brightness
g = analogRead(POT2) / 4; // note that analog read is 10-bit (0-1023), analog write is an 8-bit PWM
b = analogRead(POT1) / 4; // signal so you need to divide this value by 4.
analogWrite(RED, r); // write analog values to red, green and blue output pins
analogWrite(GREEN, g);
analogWrite(BLUE, b);
}
}
步骤 5:测试电路、代码和 LED 灯带
将电源插入桶形插孔适配器,在Arduino需要一秒钟才能启动后,您应该能够控制灯光!使用切换开关在两种模式之间切换。在一种模式下,您可以使用前三个电位器直接控制红、绿、蓝三路LED亮度;并将它们组合在一起以制作不同的颜色。在另一种模式下,LED会自动在颜色之间褪色,但您可以使用第四个电位计控制褪色速度。
观看此视频进行演示,如果不起作用,请参阅下面的疑难解答提示。请注意,在这个视频中有几个地方,我的LED闪烁 - 这肯定意味着当我把Arduino推来挤去时,我有一个松动的连接或两根裸露的电线在某个地方相互碰撞。当心。
疑难解答提示
- 检查您的试验板连接。只需要一根放错位置的电线就可以阻止整个事情的工作。
- 确保代码中分配的 I/O 引脚与实际使用的引脚匹配。 如果您直接复制并粘贴了我的代码,这应该不是问题,但是检查并没有什么坏处。
- 确保您的 LED 灯条正常工作。将 LED 灯条的 V+ 导线直接连接到试验板上的 +12V 电源轨,然后将各自的电线插入接地导轨,分别测试红色、绿色和蓝色。LED灯带具有内置电阻器,因此您不必担心将其吹出。如果每种颜色都亮起,那么您的灯条就没问题,并且问题出在电路的其他地方。
- 使用常规 LED 测试电路和代码**,跳过 MOSFET**。如果MOSFET有点太新并且令人困惑,您可以做这个项目的入门版本,仅使用三个普通的旧LED,或者一个RGB LED(搜索SparkFun或Adafruit等常见供应商,有很多选择)。这些是低电流和低电压,足以使它们可以直接从Arduino驱动,不需要MOSFET,但是您将需要限流电阻器,以便LED不会烧坏。LED闪烁和衰落是非常常见的启动Arduino项目,所以我不会在这里重现方向。
- 跳过电位计,使用硬编码的颜色图案测试电路。 这使您可以确保PWM信号和MOSFET正常工作,而不必担心模拟输入和电位计。
您可能已经注意到这里的一个趋势 - 一般的想法是将您的电路(或代码)分解成可以单独测试的更小,隔离的部分。这可以让你缩小范围,以一种划分的方式搜索问题,而不仅仅是盯着一个巨大的电路和混乱的代码,想知道出了什么问题。
步骤 6:准备镜框
所以,这就是我希望我的9英寸直径镜子可以紧贴在我9英寸直径的盖子或盒子本身的地方。从上面的照片中可以看出,10英寸直径的盒子和盖子太大了。我的解决方法是切掉9英寸盖子的顶部,然后只使用圆柱体。我保留了从顶部剪下来的圆形部分,以加强镜子的背面。所以:
1)用美工刀小心地切掉纸板盖的顶部。
2)将两件作品涂上您选择的颜色。我相信如果边缘的内部是黑色的,那么视觉会更好,外部并不重要。
3)在轮廓的侧面钻一个足够大的孔,使LED灯带上的电线能够穿过。事后看来,我应该先钻孔,然后再画。
步骤 7:安装 LED 灯条
将 LED 灯带线穿过您在纸板盖上钻的孔。
小心地开始从LED灯条上取下胶纸背衬,然后将其牢固地压在内侧或盖子上。确保它位于圆柱体内居中位置。
一旦你完全确定了灯带的长度,就切掉LED灯带。重要提示:LED 不能只在任何地方切割 - 您必须将其切割成 3 个 LED 段,并且您可以看到带有标记焊盘的切割线。如果您在其他任何地方切割,则灯条的最后几个LED将无法正常工作。
您还必须希望盖子的周长与这些3-LED段长度的倍数(约1 15/16)很好地匹配,否则您可能会在第一个和最后一个LED之间出现间隙或一点重叠。
步骤 8:组装框架
我买的镜子背面有小钩子,当我从包装上取下9英寸镜子时,我不小心把钩子从包装上扯了下来。所以,这可能是一件好事,我没有试图用它来把它挂在墙上。无论如何,这都可以解决,因为您需要取下钩子,以便将镜子平放在框架的内部。
我之前将镜子的背面超级粘在纸板盖的平坦(非涂漆)部分。现在可能是确保您的镜子干净且没有指纹污迹的好时机,因为任何缺陷都会减损成品中的错觉。从那时起,我用纸巾来处理/拿起镜子,以避免在边缘周围留下额外的指纹痕迹。
将镜子粘在纸板圆圈上后,我只是用电工胶带用LED灯条缠绕在轮辋的外边缘,并将其连接到镜子上(当然,胶带也可以,但我希望它是黑色的)。同样,这只是一个我必须经历的迂回过程,因为我的镜子一开始就不适合盖子。
一旦你把所有东西都安全了,启动Arduino并确保在这个过程中没有以某种方式损坏LED灯带或电线可能是一个好主意。
步骤9:切割亚克力 - 拼图
感谢所有参与到这个论坛帖子的想法的人。
继续之前的重要安全信息:如果您使用的是激光,丙烯酸烟雾对您不利。如果你正在切割/锯切/打磨/随便什么,你也不想吸入灰尘。确保在通风良好的地方工作,并在必要时佩戴适当的口罩。
因此,通过拼图:我将9英寸镜子的轮廓描摹在丙烯酸的纸背衬上。然后,我用两个C型夹子把它固定在桌子的边缘,然后粗略地切掉角落,做成一个八边形。然后,我沿着这条线连续进行了较小的切割。最终结果并不算太糟糕 - 边缘周围有一些裂缝,但没有灾难性的断裂破坏圆形。
一些安全注意事项 - 首先我用木刀片尝试了这一点,这根本不起作用,导致一些大的,锯齿状的丙烯酸片在刀片卡住时折断。在五金店买了一把更细的金属刀片,效果好多了。边缘仍然很锋利,所以我只是手工打磨它们以避免割伤。像往常一样,电动工具,我建议使用安全眼镜来完成这一步。
添加提示提问评论下载
步骤10:切割亚克力 - 划痕和捕捉
我切割丙烯酸的另一种方法是用美工刀划出一个圆形轮廓,然后划出一堆额外的径向线,希望我能够打破单个碎片,最后在中间留下一个圆圈。
我第一次尝试这个,我用C型夹子将丙烯酸夹在桌子的边缘,然后用木槌击打分离的碎片。这不起作用,导致大块在圆形周长内断裂(不过,如果您正在制作矩形镜子,这对于直切效果很好)。
接下来,我从论坛帖子中得到了一些有用的建议:我对丙烯酸进行了评分,然后将其放入冰箱中几个小时*。* 然后我再次使用C型夹,但用虎钳握把边缘折断,而不是用木槌击打它。这效果很好,边缘周围的开裂比拼图方法少。它仍然有一些尖锐的点伸出来,我打磨下来。
公平地说,我从未尝试过在不先冻结的情况下使用虎钳夹具,或者在冻结后使用木槌 - 所以我不能100%确定是虎钳夹具还是冻结使它第二次工作得更好。
添加提示提问评论下载
步骤 11:应用镜像色调
在这一点上,我们假设你已经以某种方式设法将丙烯酸切割成合适的尺寸。在继续之前,请确保擦拭/清洁丙烯酸(指纹污迹,打磨灰尘等)。
接下来,您需要切割一块比丙烯酸更大的镜面色调 - 这意味着您可以处理边缘上的额外材料,而不必担心指纹污迹。
窗户色调的一侧带有透明的保护涂层,您需要将其移除以暴露粘性粘合剂。从角落开始,小心地用指甲剥离透明层(这可能很痛苦),然后小心地将镜面色调平放在你的亚克力上。我认为这是整个项目中最令人沮丧/最困难的部分 - 您希望使色调尽可能平坦,没有任何气泡。大气泡在最后的镜子中会痛苦地可见,并可能减损幻觉。我尽了最大努力使色调尽可能平坦,并用指尖将它们推向外边缘(使用纸巾,这样我就不会弄脏窗户色调)来“弹出”一些气泡。如果你在第一次尝试时真的搞砸了,你可以把窗户的色调剥掉大部分,然后试着把它平放,粘合剂不应该失去它的粘性。如果所有其他方法都失败了,您也可以只切一块新作品。
一旦你对窗色的外观和光滑度感到满意,用剪刀在外围切割,这样它就和你的亚克力齐平。
步骤 12:将单向镜像连接到框架
这里没什么好看的…放置单向镜面,镜面色调朝*向*。*我只是再次在外边缘周围使用了电工胶带。如果你想变得更花哨,你可以把单向镜子安装在一个稍大的纸板盖的内侧,然后把它放在框架的外面。
*在这里,我只是遵循我在其他无限远镜上看到的指示。在光学上,它应该在任一方向上工作,如步骤1中所述。也许亚克力只是更难划伤/更容易清洁,所以最好让它朝外…老实说,我不确定。
添加提示提问评论下载
步骤13:点亮它!
插入电源并启动它!假设您在步骤5中测试了LED灯条,并且在构建镜子时没有任何重大问题,那么它应该像宣传的那样工作。以上是我在不同照明条件下拍摄的一堆照片(房间越暗,“无限”效果越好),下面是最终产品的视频。
我想让初学者尽可能清楚地了解这个Inscipleable - 所以如果你看到一些不清楚的东西,或者我跳过/暗示了你认为应该拼写出来的东西, 请留下评论让我知道。
边栏推荐
- Sword finger offer 06 Print linked list from beginning to end
- [article de jailhouse] jailhouse hypervisor
- 6. Logistic model
- Brief introduction to tcp/ip protocol stack
- Collection: programming related websites and books
- 剑指 Offer II 058:日程表
- Implement an iterative stack
- LaMDA 不可能觉醒吗?
- 全国中职网络安全B模块之国赛题远程代码执行渗透测试 //PHPstudy的后门漏洞分析
- R language [import and export of dataset]
猜你喜欢
Some common problems in the assessment of network engineers: WLAN, BGP, switch
Codeforces round 712 (Div. 2) d. 3-coloring (construction)
Wazuh开源主机安全解决方案的简介与使用体验
剑指 Offer 04. 二维数组中的查找
CF1634 F. Fibonacci Additions
Sword finger offer 04 Search in two-dimensional array
游戏商城毕业设计
How to adjust bugs in general projects ----- take you through the whole process by hand
【Jailhouse 文章】Jailhouse Hypervisor
Fried chicken nuggets and fifa22
随机推荐
Sword finger offer 05 Replace spaces
Sword finger offer 35 Replication of complex linked list
Codeforces Round #716 (Div. 2) D. Cut and Stick
F - Two Exam(AtCoder Beginner Contest 238)
Some common problems in the assessment of network engineers: WLAN, BGP, switch
对for(var i = 0;i < 5;i++) {setTimeout(() => console.log(i),1000)}的深入分析
EOJ 2021.10 E. XOR tree
Sword finger offer 04 Search in two-dimensional array
Analysis of backdoor vulnerability in remote code execution penetration test / / phpstudy of national game title of national secondary vocational network security B module
leetcode-3:无重复字符的最长子串
PC register
Scope of inline symbol
Convolution neural network -- convolution layer
How many checks does kubedm series-01-preflight have
【Rust 笔记】17-并发(上)
剑指 Offer 05. 替换空格
A misunderstanding about the console window
One question per day 2047 Number of valid words in the sentence
leetcode-6109:知道秘密的人数
Educational Codeforces Round 107 (Rated for Div. 2) E. Colorings and Dominoes