DIY LED心相框- Arduino项目

在这个Arduino项目中,我将向你展示如何使用Arduino制作一个很棒的LED心形相框。你可以观看下面的视频或阅读下面的文章了解更多细节。

概述


乍一看,它看起来像一个普通的相框,但一旦你点击背面的开关,它变成了非凡的相框。构建这个Arduino项目是非常有趣的,它可以是一个完美的情人节,生日或周年纪念礼物给你所爱的人。让我们开始构建它。

相框准备


LED-光框架和纤维板

首先,我们需要一个简单的18 × 13厘米的相框和切成相框大小的纤维板,这样就可以在上面开洞插入led。然后我们需要绘制和打印一个心形的32个led,这将被用作一个图案。我们将用钻头为led打洞。

LED-Photo-Frame——Holes-Drilling

一旦我们钻完洞,我们将开始插入led。我们需要把所有的led都插入到同一侧,阳极或较长的引线指向外面,这样我们就可以弯曲它们,然后焊接所有led的阳极在一起。

LED-Photo-Frame ---检查LED

一旦我们焊接了所有的led,我们应该检查是否所有的工作正常。为此,我们需要通过220欧姆电阻将正5伏VCC引脚连接到LED的阳极,并使用接地引脚检查每个LED是否会亮起来。

电路原理图


这是这个项目的电路原理图,你可以找到这个项目所需的完整的组件列表下面。所以我们将使用Arduino Nano和两个TLC5940芯片来控制led。TLC5940是一个提供PWM输出的16通道LED驱动器。你可以找到更多的细节如何连接和使用这个IC与Arduino在我的特殊Arduino和TLC5940教程

DIY-LED-Heart-Photo-Frame-Circuit-Schematics

这个Arduino项目所需的组件


你可以从以下任何一个网站获得组件:

yaboAG娱乐城披露:这些是附属链接。作为一名亚马逊助理,我从合格的购买中获得收入。

组装


在这里,首先我们将插入IC插座和引脚头到位,并将它们焊接到原型PCB上,这样我们就可以将IC和Arduino Nano连接到它们上。我们还需要两个额外的引脚头与一对插槽的电源,或5伏VCC和接地引脚,以及两个电容去耦。

DIY-LED-Photo-Frame-IC-Sockets-and-Pin-Headers

我们在连接组件时需要非常小心,因为如果我们连接错误的东西,那么多的电线会变得非常混乱。此时,我们需要上传Arduino代码,以确保一切都已正确连接。

DIY-LED-Photo-Frame-Connected

Arduino Code.


让我们看看我为这个项目制作的Arduino代码。所以我们用TLC5940图书馆由Alex Leone制作。下载并安装此库后,我们需要修改TLC_CONFIG.H文件并将变量NUM_TLC的值更改为串联连接的TLC5940 IC的数量,并且在我们的情况下,该值为2。

LED-Photo-Frame-Library-configuration

完成后,现在我们可以轻松地处理0到31的所有led。在开始时,我们还需要定义程序所需的一些变量。在设置部分,我们需要初始化tlc,在循环部分,创建程序。我使用switch语句将项目分为9个不同的阶段或led灯光秀。

例如,让我们来看看第一阶段。我们生成从0到31的随机INT值,并使用它们作为led的地址。Tlc.set()函数用于设置我们点亮哪一个LED。第一个参数是LED的地址,第二个参数是LED的亮度值或PWM值,从0到4095。但是,这不会立即点亮LED,它只是设置当Tlc.update()函数执行时,哪个LED会点亮。使用这个“if”语句,我们在点亮8个随机led后激活第二阶段。现在我们再看一个例子,假设是第三阶段。使用这个“for”循环,我们在Tlc.update()函数执行时将所有32个led设置为点亮。在使用Tlc.clear()函数进行半秒延迟后,我们清除并关闭所有led。您可以用类似的方法修改代码,并自己添加更多灯光秀。

/ * LED心脏照片框架 -  Arduino项目* Dejan Nedelkovski制造的程序,* www.www.kuaixg.com * // * 亚搏手机版官方下载Tlc5940库由Alex Leone,https://code.google.com/Archive/p/tlc5940arduino/ *您需要修改位于TLC5940库中的TLC_CONFIG.H,并将变量NUM_TLC的值更改为连接的TLC5940 ICS连接* / #include“TLC5940.H”INT Stage = 0;int ronsomnumber;int count = 0;INT亮度= 3500;int brightup = 50;int dir = 1;void setup(){tlc.init();void循环(){开关(阶段){// -----阶段1案例0:randomnumber =(int)随机(0,31);tlc.set(randomnumber,4095); delay(1500); Tlc.update(); if(count >= 8) { stage = 1; count = 0; } else { ++count; } break; //-----Stage 2 case 1: delay(75); for(int i=31;i>=0;i--) { Tlc.set(i,4095); delay(100); Tlc.update(); } delay(500); Tlc.clear(); Tlc.update(); stage = 2; delay(500); break; //-----Stage 3 case 2: for(int i=0;i<=31;i++) { Tlc.set(i,4095); } Tlc.update(); delay(500); Tlc.clear(); Tlc.update(); delay(350); if(count > 6) { stage = 3; count = 0; } else { ++count; } break; //-----Stage 4 case 3: for (int i=0;i<=15;i++) { Tlc.set(i,4095); Tlc.set(31-i,4095); Tlc.update(); delay(70); } delay(50); for (int i=15;i>=0;i--) { Tlc.set(i,0); Tlc.set(31-i,0); Tlc.update(); delay(70); } for (int i=15;i>=0;i--) { Tlc.set(i,4095); Tlc.set(31-i,4095); Tlc.update(); delay(70); } for (int i=0;i<=15;i++) { Tlc.set(i,0); Tlc.set(31-i,0); Tlc.update(); delay(70); } delay(50); Tlc.clear(); Tlc.update(); delay(100); if(count > 1) { stage = 4; count = 0; } else { ++count; } break; //-----Stage 5 case 4: for (int i=15;i>=count;i--) { Tlc.set(32-i,4095); Tlc.update(); delay(5); Tlc.set(32-i-1,0); Tlc.update(); delay(5); Tlc.set(i,4095); Tlc.update(); delay(5); Tlc.set(i+1,0); Tlc.update(); delay(50); } if(count > 15) { Tlc.set(16,4095); Tlc.update(); delay(2000); stage = 5; count = 0; } else { ++count; } break; //-----Stage 6 case 5: for (int i=0;i<=31;i++) { Tlc.set(i,brightness); Tlc.update(); } Tlc.update(); brightness = brightness + brightUp; if (brightness>=3500) { brightUp=-50; ++count; } if (brightness<=150) { brightUp=50; } if(count > 6) { stage = 6; count = 0; brightness = 3500; Tlc.clear(); Tlc.update(); } delay(40); break; //-----Stage 7 case 6: for (int i=0;i<=30;i+=2) { Tlc.set(i,4095); Tlc.set(i+1,0); } Tlc.update(); delay(500); for (int i=0;i<=30;i+=2) { Tlc.set(i,0); Tlc.set(i+1,4095); } Tlc.update(); delay(500); if(count > 20) { stage = 7; count = 0; } else { ++count; } break; //-----Stage 8 case 7: for(int i=31;i>=16;i--) { Tlc.clear(); Tlc.update(); delay(2); Tlc.set(i,4095); Tlc.set(i+1,2000); Tlc.set(i+2,1000); Tlc.set(i+3,500); Tlc.set(i+4,300); Tlc.set(i+5,200); Tlc.set(i+6,100); Tlc.set(i+7,50); Tlc.set(i+8,0); Tlc.set(i-16,4095); Tlc.set(i-15,2000); Tlc.set(i-14,1000); Tlc.set(i-13,500); Tlc.set(i-12,300); Tlc.set(i-11,200); Tlc.set(i-10,100); Tlc.set(i+-9,50); Tlc.set(i-8,0); Tlc.update(); delay(50); } if(count > 8) { for(int i=31;i>=0;i--) { Tlc.set(i,4095); Tlc.update(); delay(50); } stage = 8; count = 0; } else { ++count; } break; //-----Stage 9 case 8: for(int i=31;i>=0;i--) { Tlc.set(i+8,4095); Tlc.set(i+7,2000); Tlc.set(i+6,1000); Tlc.set(i+5,500); Tlc.set(i+4,300); Tlc.set(i+3,200); Tlc.set(i+2,100); Tlc.set(i+1,50); Tlc.set(i,0); Tlc.update(); delay(50); } for(int i=31;i>=0;i--) { Tlc.set(i,4095); } Tlc.update(); delay(10); if(count > 8) { delay(8000); Tlc.clear(); Tlc.update(); stage = 0; count = 0; } else { ++count; } break; } }

最后的联系


一旦我们完成了编程并知道一切都很适用,我们需要将LED固定到纤维板上,我用胶枪确实如此。然后,我们需要使用胶枪和4块切割到尺寸的纤维板制作封面盒。yabo7. com

DIY-LED-Photo-Frame-yabo7. comElectronics-Cover-Box

剩下的就是把来自开关的电源线和插入相框纤维板上的电源插孔连接起来,加上照片,把整个盒子固定到相框上,就完成了!

DIY-LED-Photo-Frame-Final

在这里你可以看到完整的演示视频的LED心相框。

欢迎在评论区提出任何问题!

6的反应

  1. 雷莫

    好的项目和精彩网站!我为我的女朋友做了心脏,她喜欢它很多。

    回复
  2. 克里斯

    你好,我心中发生故障,需要一个暗示在哪里找到理由

    心脏的一侧是工作的,这个带有引脚16-31。是的,我已更改变量:#define num_tlcs 2

    我还发现TLC5940负责的心脏,不工作变得非常热

    回复
  3. 尤金

    伟大的项目,谢谢。它像符咒一样有效。我女儿很喜欢这个相框。她开着灯睡觉!
    我只做了一个微小的改变,用我的3D打印机代替纤维板制作封面盒。
    完成后,建议将导线焊接到led上,以获得更好的接触。

    回复

发表评论

您的电子邮件地址将不会被公布。

推荐

2019年初学者和爱好者的最佳进入级示波器

最适合初学者和爱好者的示波器

推荐

2019年初学者的8个最佳Arduino Starter Kits

8个最好的arduino初学者工具包

推荐

最佳3D打印机初学者和爱好者- 3D打印

最好的3d打印机初学者和爱好者