圣诞节又到了,不管是你一年中最喜欢的节日,还是让你出了一身冷汗,装饰品都开始增多。今年,为什么不在你的装饰品中加入一些DIY技术,让它们脱颖而出呢?
在这个项目中,我们将建立一个防风雨,运动激活8×8 LED矩阵从头开始。。。不到20美元。它的设计适合在一个标准的圣诞门花环的中心,虽然它可以在房子周围的任何地方使用。因为它是电池供电的,所以离房子远的任何地方都可以!
对于本项目,您需要:
虽然没有严格的必要,因为你可以焊接组件直接到纳米,我也发现一个小的实验板非常有用,而测试。热胶枪也有助于把所有的零件放在一起。
这个项目需要大量的焊接,作为一个初学者,它似乎令人畏惧。我个人还是一个焊接的初学者,发现它不像看上去那么有挑战性或时间消耗。如果你是新来焊接这里有一些好的提示来帮助。
如果你真的不热衷于焊接的想法,这个项目也可以与LED带,或现成的LED矩阵,你可能在你的初学者工具包。如果你决定走这条路,一些代码调整是必要的。
我们将从Arduino的电路图开始,我们将连接到PIR传感器和LED矩阵的导线。
现在来**我们的8 x 8 LED矩阵。从创建矩阵的一行和一列开始是个好主意,以确保它正好位于原型板上您想要的位置。
在上面的照片中,所有的LED都被放置在阳极(更长,正的腿)朝向原板的顶部。这是很重要的,因为我们将通过将它们连接在一起来创建公共阳极柱,以及一排普通阴极(较短的负支)。现在就这样做会在以后省去头痛!
我们将构建一个公共行阴极矩阵,这个图显示了它是如何连接的。
一开始它可能看起来有点吓人,但它是一个非常简单的配置。在每一行中,所有的阴极从右到左连接,然后连接到我们的Arduino引脚之一。在这之后,我们对每一列阳极做同样的处理。通过这种方式,我们可以打开阵列中的任何单个LED,具体取决于我们向哪个列供电,以及将哪个行接地。
从放置第一排LED开始。确保所有的阳极都朝向顶部,并将其翻转过来。我发现在每个角落加上另一个LED,在上面用一根松紧绳连接另一块原版电路板,有助于将所有东西固定到位。
现在一个接一个地将每个LED的阴极(短)腿向左弯曲,使它们彼此重叠。从左边开始,从右边开始是最容易的。如果您使用的是一块较大的protoboard,可以先将它们焊接到板上,然后使用焊盘将它们连接在一起。小心不要将任何阴极连接到电路板上的任何其他线路或任何阳极上!
对所有八行重复此过程,完成后,应该有如下内容:
阳极柱更精细一些。在上图中,阳极每次穿过一排阴极时都会弯曲。这是因为他们根本摸不到这些行。我们必须把阳极弯到阴极排上,并把它们相互连接起来。你可能会发现用钢笔弯腿很有帮助。
对每一排阳极都这样做,并在每个顶部阳极上连接一个电阻器。你可能会发现,把电阻放在protoboard的下一个孔中,然后用焊料连接焊盘更容易。你现在应该有这样的东西:
祝贺 你!LED矩阵完整。在这个阶段彻底检查焊接,确保没有断裂,并且没有任何一列接触到这些行。别担心如果它看起来不好看,我们只需要它来工作!现在,您可以通过将5v连接到任何柱端,并将其接地到任何一行端,来检查每个LED。
如果一切正常,将连接线连接到每列和每行,并将它们连接到Arduino上,如上图所示。
打开ArduinoIDE并选择板和端口。如果您是Arduino的新手,请查看此入门指南。
在编辑器中输入此代码。如果您不熟悉它,那么它是相当密集的代码,但是这里提供了完整的注释来帮助您理解它是如何工作的。
c***t int row[8] = { 2,3,4,5,6,7,8,9 };c***t int col[8] ={ 10,11,12,14,15,16,17,18 };int pirPin = 19; int pirState = LOW; int val = 0; bool pirTrigger = false;c***t int pirLockTime = 12000; int pirCountdown = pirLockTime;int pixels[8][8];c***t int refreshSpeed = 500;int countDown = refreshSpeed;int currentCharIndex = 0;typedef bool CHAR_MAP_NAME[8][8];c***t CHAR_MAP_NAME blank = { {0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},}; c***t CHAR_MAP_NAME threedownthreein = { {0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},{0 , 0 , 1 , 0 , 0 , 0 , 0 , 0},{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},}; c***t int noOfFrames = 5;c***t CHAR_MAP_NAME *charMap[noOfFrames] ={&blank,&threedownthreein,&blank,&blank,&threedownthreein};void setup(){ for (int i=0;i<8;i++){ pinMode(row[i], OUTPUT); pinMode(col[i],OUTPUT); //motion sensor pinMode(pirPin, INPUT); digitalWrite(col[i], LOW); }}void screenSetup(){ c***t CHAR_MAP_NAME *thisMap = charMap[currentCharIndex]; for (int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { bool on = (*thisMap)[x][y]; if(on) { pixels[x][y] = HIGH; } else { pixels[x][y] = LOW; } } } currentCharIndex++; if(currentCharIndex>=noOfFrames){ currentCharIndex = 0; } }void refreshScreen(){ for (int currentRow = 0; currentRow < 8; currentRow++){ digitalWrite(row[currentRow], LOW); for (int currentCol = 0; currentCol < 8; currentCol++){ int thisPixel = pixels[currentRow][currentCol]; digitalWrite(col[currentCol], thisPixel); if (thisPixel == HIGH) { digitalWrite(col[currentCol], LOW); } } digitalWrite(row[currentRow], HIGH); } }void loop(){ val = digitalRead(pirPin); if (val == HIGH){ pirTrigger = true; } else if (val == LOW && pirCountdown <=0) { pirTrigger=false; pirCountdown = pirLockTime; } if(pirTrigger==true && pirCountdown > 0) { refreshScreen(); countDown--; pirCountdown--; if(countDown <= 0) { countDown = refreshSpeed; screenSetup(); } } }需要了解的重要部分包括:
刷新速度变量。此变量确定每次屏幕刷新之间的时间间隔。数字越大,等待的时间就越长。
常量字符映射名称。这是您放置要显示的每个角色映射(或帧,如果这样想比较容易的话)。
noOfFrames变量。这将决定在一次完整播放中显示多少帧。请注意,它可能与字符映射的数量不同。例如,如果您想显示“一只猫”,您只需要定义四个不同的帧:blank、A、C和T。
现在,当运动传感器检测到运动时,LED屏幕应从左上角向下闪烁三下,向内闪烁三下。如果显示不正确,请再次检查您的接线,以确保一切都在正确的位置!当您添加自己的图像或信息时,它可能会被提前切断,或播放时间过长。尝试更改pirLockTime变量,直到它按所需时间播放。
将每个帧添加到LED显示屏的过程可能会有点乏味,因此我们创建了此电子表格,以便为LED矩阵创建文本和图像(**一份谷歌表副本,以便您可以编辑它)。
使用电子表格,您可以将您的创作直接复制到代码中。
现在我们有了一个工作的LED矩阵,我们需要一种方法让它在冬季生存。虽然这种方法可能经不起热带风暴或被泡在游泳池里,但它应该足以使所有的电子产品免受恶劣天气的影响。
我用了一个直径15厘米,深6厘米的圆形图珀盒,因为它完全适合我的组件。在盖子上剪一个比LED矩阵稍大的窗户,并在上面贴上一层透明的塑料薄膜,确保没有液体进入的空间。从一些包装中取出的坚固塑料最有效,但这就是我所拥有的。您也可以为原板安装一些安装,尽管这两个工作都可以很容易地用强力防水胶带完成。
下一步,在窗户下面开一个小孔,然后小心地慢慢地加宽它,直到你的PIR传感器刚好可以通过。你希望它尽可能合身。
连接PIR传感器,并用胶带或热胶水填充任何可以看到的间隙。
清理所有可能阻止盒子正常关闭的胶带或胶水,并将所有组件与电池一起添加到盒子中。这里,使用了一个简单的AA电池组,直接**Nano的VCC引脚。一些小块的软木塞被添加到围墙的外面,以帮助将建筑物悬挂在花环的中心。
一旦盒子封好了,就把它和你的圣诞花环挂在一起,等待你的访客对你的高科技20美元以下的个人欢迎的反应!你甚至可以更进一步,创造可怕的DIY装饰周围的房子了!
在这个项目中,我们已经建立了一个自包含的LED矩阵系统从头开始,这是运动激活,可以生存在外面,但最恶劣的天气。在其他项目中,这个构建将在假期结束后很长时间内发挥作用,同样的技术也可以用于为其他项目创建廉价的防风雨外壳。
你有没有做什么东西来让你的圣诞节有一个DIY的转折点?你今年有没有打算买什么DIY主题的圣诞礼物?请在下面的评论中告诉我们!
...,只要一点知识和指导。这里有七种方法来美化你今年的圣诞节,从初学者友好到令人印象深刻的复杂。 ...
...于电源线的桥接技术是一种很好的实践,因为它可以确保您的组件无论在试验板上的什么位置都可以获得电源。 ...
...的人。[链接] 2.5英寸ssd 这120 GB的固态硬盘使一个坚实的升级。[链接] 1品脱孔径认可brew Cave Johnson认可这种孔径认证的啤酒容器。喝吧,开心点![链接] 我们希望这次我们的歌听起来更好一点! 而且,为了给你的假期添油加...
...说的是,它是植物的毁灭者。幸运的是,RealSimple已经为您的所有节日绿色植物,从石蒜花到圣诞树,提供了一个护理指南。下面的链接将全面解释如何避免杀死各种各样的节日植物,但我们将在这里讨论主要参与者:花圈和花...
查理·布朗的圣诞树没什么问题。但是,如果你的树看起来有点光秃秃的,你想增加一些郁郁葱葱,一串花环将做的把戏。为了让你的树更丰满,你可以用一串花环或者一个普通的花环。生活博客3 Little Greenwoods用一棵6.5英尺高的...
...TA 6Gb/s USB 3.0 ATX AMD主板(58美元)| Newegg |折扣和促销代码升级后MB15MSI Z87 MPOWER SP LGA 1150 Intel Z87 HDMI SATA 6Gb/s USB 3.0 ATX Intel主板(143美元)| Newegg |折扣和促销代码升级后MB分形设计Define R4黑珍珠w/u**3.0atx中塔静音电脑机箱($80)| New...
...你电脑,就像一台可以放在口袋里的个人电脑,我们想把您的注意力转移到大多数智能**用户往往忽视的最重要的因素,智能**的显示。 让我们详细看看OLED和AMOLED这两种显示技术。 什么是有机发光二极管(oled)? OLED代表“有...
...的oled(有机发光二极管)。它最接近的技术版本是它的升级版,IPS-lcd(平面内切换lcd)具有临时功能。amoled与tft对比表什么是amoled公司(amoled)?OLED显示是一种薄膜显示技术。AMOLED也是它的一个子形式,由电致发光和像素技术的...
壁橱通常很暗,而且越高越难看到里面。增加一个灯泡并不总是最简单、最安全、甚至最便宜的选择,但你可以用几个LED解决所有这些问题。凯莉不能把白炽灯放在她黑暗的食品储藏室里,因为空间太小,不安全,即使它没有烧...