Arduino萤火虫的制作教程

电子说

1.2w人已加入

描述

第1步:你需要什么。

Arduino

Arduino

到让你的bug闪烁,你需要这些组件:

Arduino。我从Nano开始,但任何与Arduino兼容的微控制器都可以。

黄色LED,5毫米。您最多可以使用其中的6个。

电阻器。每个LED需要一个电阻来限制电流。我用了470欧姆,但是150欧姆以上的任何东西应该可以保护你的微控制器。

面包板。

跳线。

要完成后院项目,您需要:

防风雨项目箱。

带连接器的9伏电池。 (请参阅本节底部的注释。)

切换。 (我选择了这些防水开关。如果你不在外面使用它,任何开关都可以。)

几码线将LED放在花园周围。我每个LED使用大约10英尺的Cat5以太网线。

小型面包板或一些穿孔板。

LED导线穿过的防风雨电缆接头。 (如果你不在外面也使用它,你可以省略它。)

热缩管以保护你的LED虫屁股。

绿色钩环(即魔术贴)条带将LED萤火虫固定在花园中的植物和柱子上。

将组件插入小型面包板的公头。

工具:

钻头项目框。 (利用这个机会给自己一个很好的步骤。你会很高兴你做到了)。

热胶枪。

烙铁。

旋转工具(即Dremel),用于在需要时在工程箱中划出空间。

这里有一些注意事项:

1。电池选择是为了快速简便的启动。永久使用9伏电池有点浪费。你最好使用4x AA电池座以延长使用寿命(但是你需要一个更大的项目盒来安装它)。

2。如果您选择为导线解构Cat 5以太网电缆,请确保它们是铜芯并将它们整齐地包裹在某些PVC周围,以便在您工作时保持整齐。我再次使用每个LED大约10英尺的电线。如果你想要远远地扩散灯光,一定要使用更长的电线!

3。最后,我提供的所有链接仅仅是建议。在构建或购买任何东西之前,请仔细阅读整个Instructable,因为您将更好地了解您希望如何亲自前进。

第2步:构建电路。

Arduino

Arduino

Arduino

此项目使用脉冲Arduino上的宽度调制引脚。微控制器有6个这样的引脚,欢迎您随意使用。电路非常简单。将脉冲宽度调制(PWM)引脚D3,D5,D6,D9,D10和D11的所有电源连接到LED的正极端。将负端连接到电阻器然后连接到公共地。 (电阻可以放在LED的前面或后面。除非你想要防止更高电流的短路,否则没有区别。)我提供了一些原理图来帮助接线。 (使用Fritzing设计软件创建的图表。)

第3步:代码。

如果您是一位经验丰富的程序员,那么‘我会发现这段代码过于简单。这是一个很好的代码开始学习,因为它向您介绍变量,pinmodes,函数甚至随机生成器的使用。代码并不像它那样紧凑,因为我确信使用数组等可以实现相同的效果。

代码注释列出了每个部分的逻辑。整个代码都嵌入在这里,您可以下载下面的草图。

/*

This script flashes 6 LEDs (yellow, of course) in random order

at random intervals using PWM.

Each LED is controlled by it’s own function.

*/

int led1 = 3; // LED connected to PWM pin 3, etc. I used all 6 PWM pins.

int led2 = 5;

int led3 = 6;

int led4 = 9;

int led5 = 10;

int led6 = 11;

long randnum; // randnum controls the time interval between flashes and

long randbug; //randbug controls which bug lights up.

void setup() {

pinMode(led1,OUTPUT); //Setting all PWM pins as outputs.

pinMode(led2,OUTPUT);

pinMode(led3,OUTPUT);

pinMode(led4,OUTPUT);

pinMode(led5,OUTPUT);

pinMode(led6,OUTPUT);

}

void loop(){

randbug = random(3,12); //randbug randomly chooses a function to execute,

//thus randomly chooses a bug to light up.

if (randbug == 3) {

bug1();

}

if (randbug == 5) {

bug2();

}

if (randbug == 6) {

bug3();

}

if (randbug == 9) {

bug4();

}

if (randbug == 10) {

bug5();

}

if (randbug == 11) {

bug6();

}

}

/*

* Each of these functions work the same way. ‘for loops’ increase then decrease

* the output of that pin to control LED brightness.

* ‘randnum’ is a random time interval between 10 and 3000 ms

* and chooses a time interval between bug flashes.

* ‘delay 10’ is just for the fade effect.

*/

void bug1(){

randnum = random(10, 3000);

for(int fadeValue = 0 ; fadeValue 《= 255; fadeValue +=5) {

analogWrite(led1, fadeValue);

delay(10);

}

for(int fadeValue = 255 ; fadeValue 》= 0; fadeValue -=5) {

analogWrite(led1, fadeValue);

delay(10);

}

delay (randnum);

}

void bug2() {

randnum = random(10, 3000);

for(int fadeValue = 0 ; fadeValue 《= 255; fadeValue +=5) {

analogWrite(led2, fadeValue);

delay(10);

}

for(int fadeValue = 255 ; fadeValue 》= 0; fadeValue -=5) {

analogWrite(led2, fadeValue);

delay(10);

}

delay (randnum);

}

void bug3() {

randnum = random(10, 3000);

for(int fadeValue = 0 ; fadeValue 《= 255; fadeValue +=5) {

analogWrite(led3, fadeValue);

delay(10);

}

for(int fadeValue = 255 ; fadeValue 》= 0; fadeValue -=5) {

analogWrite(led3, fadeValue);

delay(10);

}

delay (randnum);

}

void bug4(){

randnum = random(10, 3000);

for(int fadeValue = 0 ; fadeValue 《= 255; fadeValue +=5) {

analogWrite(led4, fadeValue);

delay(10);

}

for(int fadeValue = 255 ; fadeValue 》= 0; fadeValue -=5) {

analogWrite(led4, fadeValue);

delay(10);

}

delay (randnum);

}

void bug5() {

randnum = random(10, 3000);

for(int fadeValue = 0 ; fadeValue 《= 255; fadeValue +=5) {

analogWrite(led5, fadeValue);

delay(10);

}

for(int fadeValue = 255 ; fadeValue 》= 0; fadeValue -=5) {

analogWrite(led5, fadeValue);

delay(10);

}

delay (randnum);

}

void bug6() {

randnum = random(10, 3000);

for(int fadeValue = 0 ; fadeValue 《= 255; fadeValue +=5) {

analogWrite(led6, fadeValue);

delay(10);

}

for(int fadeValue = 255 ; fadeValue 》= 0; fadeValue -=5) {

analogWrite(led6, fadeValue);

delay(10);

}

delay (randnum);

}

第4步:构建框。

Arduino

一旦你用代码刷新你的Arduino并得到你的萤火虫以你喜欢的方式工作,你可能想把它们放在花园里;这意味着一个项目盒和一些热缩,以保持Arduino和LED干燥。让我们来吧!

第5步:构建Bug Butts!

Arduino

Arduino

Arduino

Arduino

将LED引线修剪约5mm。

剥去并使用你正在使用的电线的末端,也约5毫米。

在每个电线末端滑动1mm热缩管。

将LED焊接到电线上。 (此时,你应该选择你的对中的哪一根线是正面的,哪一根是负的。我选择实线为正线,白线为负线。在整个项目中保持该策略以避免后来的头痛!)

将热量一直向上滑过裸线和LED引线。在它们上面快速燃烧,将它们收缩到电线上。

在LED上滑动另一块热缩管,并将LED透镜伸出末端并将其熔化到位。

将几片热缩管滑到整个长度上,然后每隔几英尺将其熔化,以保持线材整洁。

步骤6:准备项目框。

Arduino

使用带有砂磨钻头的旋转工具清除任何不需要的东西塑料在您的项目框中。 (小心不要切掉任何可能需要将盒子重新放在一起的螺丝安装座。)

确定您需要开关的位置以及LED线是否出来。我建议双方使用符合您需求的东西。

使用合适尺寸的钻头为电缆接头和开关打孔。

注意:在上面的照片中,你会看到我做了一个“假人”电缆。”这是一组6对我用于LED的电线,它们通过热缩将它们捆在一起。我用它来确保电缆接头与实际的电缆束很好地配合,并且一旦开关,电缆接头和盖子打开,也要测试盒子的防水性能。 (在6英寸水中淹没24小时后,里面的水分很少。我很乐意将这个盒子称为“耐候性”。)

第7步:带来电源!

Arduino

通过粗略放置所有电池和开关线来确定您需要多少电池和开关线才能到达Arduino项目框中的三个组件。修剪开关和9V电池连接器的电线。剥开并涂上两端。将一些热收缩滑动到下一步。

从条带上切掉两个插头(但要将它们粘在一起)。

将9V电池连接器的红色引线焊接到开关的一端。将开关的另一端焊接到公头插针。将黑色电池引线焊接到另一个插头引脚。

如上图所示,插头引脚将进入面包板,为VIN(正极)和GND(负极)的Nano供电。 VIN引脚可以处理7到12伏电压。如果您计划以9V电池以外的方式为Arduino供电,请使用其他电源引脚。

步骤8:如果需要修改Nano。

Arduino

因为我的项目框很浅,我需要移除ICSP插头引脚才能适应。这些引脚是Arduino的辅助接口。删除它们不会损坏您的Nano,因为您始终可以通过USB端口加载脚本。

注意:如果您的Nano需要焊接接头引脚,请在组装Arduino时省略这些引脚。

步骤9:连接内部。

Arduino

Arduino

Arduino

Arduino

Arduino

将电缆压盖端口连接到为其钻孔的项目盒中。如果您对如何使用电缆接头感到困惑,我在YouTube上发现的这个视频显示正在组装的视频。 (快进到0:57。)你可能有橡皮垫圈。这是在项目箱和电缆密封套的外部螺母之间进行的。

收集LED线的松散端。花这个时间将它们修剪成相等的长度,剥去并涂上两端。将端部穿过电缆密封套的盖子并使用一块热缩端将端部捆在一起,留下足够的长度以到达盒子内侧的面包板。

将电线束通过电缆压盖端口送入工程箱并扭转压盖,将电线锁定到位,最好围绕用于将它们捆在一起的热缩器周围。

将地线与正极线分开(记住您之前选择的那些)。将所有接地线焊接在一起。从该束中连接一根短导线,并用1个插头完成。使用热缩保护您的裸露焊点。

每根正极线两端的焊接公头。再次,使用热缩。

将正端公头插入面包板,连接到Arduino上的PWM引脚。

将公共地插入面包板,使其通过限流电阻,然后通过Arduino上的GND。

放入电池并将开关穿过先前钻过的盒子中的孔。将橡胶垫圈安装在项目盒和螺帽之间。将电源线插入面包板。

将盖子卡在盒子上。你已经完成了!

注意:注意在原理图和开发阶段我每个LED使用一个限流电阻。通常情况下,每个LED应该通常使用自己的电阻,一次点亮多个LED。该代码不允许一次点亮多个LED,因此只使用一个电阻就可以保护Arduino。这也节省了小面包板上的空间,或者使用串联电阻器对每个LED进行时间焊接。那说。..。..警告!!!如果您计划更改代码以便一次点亮多个LED,则每个LED需要单独的电阻。

步骤10:使用它。

Arduino

使用Velcro皮带或少量热胶将LED固定在植物,栅栏,粉红色的火烈鸟或院子里的任何其他东西上。将它们塞进酒架,窗帘后面,甚至将天花板上的电线悬挂在黑暗中进行3D浮动效果!这些对于派对,婚礼,电影和摄影来说都是一个很好的选择。

步骤11:更进一步。..。..

如前所述,这是该项目的早期版本,但它充满了潜力!通过连接移位寄存器来运行更多的LED(请参阅JColvin91的说明,了解具体方法。)添加一个光传感器,太阳能充电器和定时器,用于“设置并忘记它”功能!与代码混淆,为bug添加自己的耀斑。分享您的成就和享受!!

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分