第一步:收集零件。
要做这个项目,你需要以下。请牢记案例的材料,你可以在其他项目中使用大量的下脚料(这使得未来建造的成本更便宜)。如果要查看价格等。在ebay上,我已经上传了你需要的PDF文件。
工具(我假设你已经有了这些)
熨斗
焊料
焊料泵(如果你犯了一个错误,需要清除焊料)
热胶枪
热棒
工艺刀(也称为斯坦利刀)
尺子/卷尺/游标卡尺
无绳钻头(1毫米至13毫米)
带切割盘的旋转多用途工具(也称为Dremel)
异丙醇(便宜的须后水)等清洁液也是如此。
安全面罩(用于喷漆)
电子产品(电子产品成本=13.05)
其中一些是免费的。如果把旧的电子玩具分开,他们会把这些漂亮的聚脂薄膜音箱放在里面。当你在那里时,你可能还会得到一个DC桶和一个按钮。
杜邦/跳线电缆-0.99
DS1307实时时钟模块-0.99(建议用DS3231代替)
Ardno nano USB电缆-2.23
8欧姆聚酯薄膜扬声器-0.99
SPST即时按钮-1.49
5.5毫米DC桶形插座-1.26
5v 0.5A DC电源-2.83
MAX7219点阵显示器-3.76
外壳(外壳材料成本=17.19)
60毫米方形排水管-5.99(你会有ALOT)
黑漆-4.85
黑色PVC(泡沫板)-2.99
强力胶-0.99
李》
60毫米端盖-2.37毫米
总成本=30.24:-)。截至今天,这相当于38美元的国际读者。
我喜欢用PVC方管。他们很容易钻孔,切割和绘画,我用了一个蒸汽朋克时钟。
第二步:准备排水管。
标出你想放东西的地方。
它这很容易。我没有不要用任何花哨的东西。首先,我用家里的黑客锯(约30厘米)将我的板凳长度减少到2.5米。后来我用dremel把它剪了出来,让边缘变得又美又直。然后我把零件放在管子表面,用永久市场标出我要钻孔切割的位置。我描绘了LED矩阵的外部,并使用旋转多功能工具切割一个方形孔,使其齐平。我用一个数字卡尺来测量按钮和DC镜筒的直径,在背面和顶部切割出正确尺寸的孔。
切割挡板
我在之前的项目中铺设了大量的PVC泡沫板。它们非常适合将电路安装到外壳中,并使用它们将环氧树脂混合在一起,以制造其他钻头和外壳。取一张A4或A5大小的纸,在四周或框架上切一个5毫米的正方形,形成LED矩阵。这将隐藏任何不稳定的限制,当你切割矩阵的方孔。为此我在Inkscape上画了一个小模板打印出来(带SVG文件)。然后我用美纹纸贴在船上,用工艺刀小心翼翼地割开。它要把它做好是很难的。我建议先把里面切开。
应用一切。
所有的孔都钻好并切好之后,毛刺就被去除了。用一些酒精抹布清洁表面,去除任何灰尘或污染(如果你没有没有IPA,可以用便宜的须后水。尝试在通风良好的区域喷洒,并尽可能使用口罩。我在地板上用一些硬纸板做了这个,但是它这并不理想。甚至微风也会让颜料飞回你的脸上。要小心,尽可能穿戴防护装备。
喷涂管道、挡板和端盖,使它们都是相同类型的黑色,然后让它们干燥几个小时。
第三步:编程Arduino
关于代码的一些信息
感谢GeckoDiode,因为我把他的代码修改成了用MAX7219芯片。Adafruit版本使用I2C总线,MAX使用SPI总线。为此,我使用了MaxMatrix库,我下载并安装到Arduino IDE中。如果你想了解更多关于MaxMatrix和LED Matrix工作原理的信息,这里有一个关于HowToMechatronics.com的简短教程。LED矩阵完全由单色LED组成,而不是具有多色显示器。
我的一个挫败感就是没有明确定义库的功能是什么,每个参数需要传递哪些参数。幸运的是,我能够通过试错找到我所做的事情,最后并不难使它正常工作。首先要明白的是,你要定义矩阵里有多少个88的模块。在我的代码中,它存储在一个名为模块如下所示:
"整数模块=4;"
这是您在显示器中链接在一起的88个模块。它它不是你用来发送数据的发光二极管或引脚的数量。下一件要记住的事情是,如果你的雪碧或者其他任何东西覆盖了所有四个矩阵,那么字节数组需要这样定义:
" byte text_start_bmp []={32,8,*一些字节的数据*。};"
代表数字的行数和列数的矩阵。在本例中,名为text _ start _ bmp 以32列8行显示。这些数字仅显示在88的矩阵上,因此分钟数10如下:
" byte minute_ten_bmp []={8,8,*一些字节的数据*。}; "
入侵者覆盖了两个矩阵,因此字节数据中的字节将为16,8。
另一个让我震惊的是elf数据的位置。你可以让Arduino在默认起始位置矩阵的不同X/Y位置显示精灵。对于第0分钟,代码如下所示:
matrix.writeSprite(8,0,minute _ zero _ BMP);"
一个数是X调,一个数是y调,我可以现在不记得是哪一个了,但是如果你想把精灵向上或向下推1行或1列,你只需要加上一个正数或负数。它对于8x8的矩阵来说已经足够简单了,但是当你的sprite覆盖多个矩阵时,你必须相应地设置起始位置。POP 向导如下:
" matrix.writeSprite(16,0,invader _ pop _ BMP);"
现在,请注意原来的位置。16不是8。此处的代码指示向导从位置行/列16开始从左到右显示。它认为两个8x8的显示器是一个16x8的显示器,即使有4个!因此,重要的是要考虑子画面将显示多少次,并相应地调整每个子画面的字节数组的大小。否则,你会有一些非常有趣的精灵!
DS1307 RTC
虽然DS1307与Adafruit RTClib.h库配合得很好,但它这只是一种痛苦,你可以不要手动设置时间。我只是接受了这一点,因为这意味着需要更改的代码更少。DS1307使用计算机编译代码时的时间和日期来设置时间。相反,学习如何使用DS3231库,并在未来提前一到两分钟进行设置。它也少了漂移,所以随着时间的推移,它会保持更好的时间。这两个模块都使用I2C总线,我相信如果你想继续使用它,DS3231可以与RTClib.h一起使用。
上传代码
一旦您对代码感到满意,请将其上传到Arduino。我附上了我的Arduino草图供你参考。
第四步:组装电子设备。
虽然我建议上传代码,但是先把杜邦/跳线的电子设备组装在面包板上,这样当你上传代码的时候,你就知道一切都按预期工作了。这允许你在开始粘贴之前解决诸如显示精灵的问题。在我的代码中,您可以看到我使用的是数字引脚4、5、6、7、9,但您可以根据需要更改这些引脚。您可能需要将电缆焊接到按钮、DC插孔和扬声器上,但大多数应该是易于推动的连接器。
一旦你满意了,电子设备就可以正常工作了,你就要考虑焊接连接了。你可以用铜条板/veroboard来做到这一点,但对于少数元器件,你可以直接焊接到Arduino的管脚上。它看起来像一只老鼠的巢,但无论如何没有人会看到它的内部。只要确保所有金属部件都被隔离,你不在这种情况下不要短路。
当我主按钮引脚拉低,按钮工作。我发现Arduino正在识别当浮动电子设备安装在假按钮上时,假按钮被按下。在按钮上使用10K下拉电阻,并将引脚设置为输入_上拉为我解决了这个问题。
附上PDF和PNG的原理图,这样你就知道在哪里连接引脚了。
第五步:安装电子设备,关机。
对于我的时钟,我使用热胶来安装电子设备,但注意不要涂得太多(电子产品不I don’我不喜欢被加热太久。我在挡板周围点了一小滴强力胶,压在前面。我通过推动两端的端盖来完成外壳。当然,你可以粘上端盖来完全关闭组件,但我打开了我的一侧,所以我仍然可以访问arduino的USB端口来重置日期和时间。
享受
总的来说,我我对它出现的方式很满意,考虑到它只有一些排水管和喷漆。我希望你喜欢它,如果你能想到任何可以添加的很酷的升级,请告诉我。我我很想知道是否有人能让这个更便宜,或者是否有另一种方法来适度地制作一个外壳,我可以在我的下一个项目中尝试一下。
标签:矩阵代码外壳