在看到我最近的项目(Servo Motor Art)获得的大量意见后,我决定我可能应该分享我的其他一些基于 Arduino 的项目。圣诞节时,我把它放在我的前院里来招待附近的孩子们。我知道它曝光过度 - 太多对比度等,但你可以明白这个想法:
我在这里包括用于迷宫解算器和圣诞节表演的软件,以及万圣节表演和其他几个应用程序。它们都包含在一个 Zip 文件中,您可以下载。
这实际上是我的第三个 LED 显示屏。要查看历史并更多地了解这些东西是如何工作的,我提供了一个链接。这是补充阅读,但确实为您提供了一些有关这些面板如何工作以及如何对它们进行编程的有趣信息:LED 显示屏背景
我还提供了另一个链接。这是购买面板的数据表。我的显示器实际上由 4 个面板组成,但这将为您提供有关这些面板操作的一些深入信息:LDP-6432 数据表(我们的面板实际上是型号 P7.62v2,而不是 LDP-6432,但数据上面的表格很好,因为差异只是物理尺寸。)
我有 4 个面板,每个面板有 64 个横向 LED 和 32 个纵向 LED。我将它们两个横向安装,两个向下安装,以获得 128 个 LED 横向和 64 个 LED 高度的显示器。它们安装在一块 2 英尺乘 4 英尺的泡沫绝缘材料上。我开始使用沉重的胶合板框架,但最终的结果非常重且难以移动。所以我换成了一块 2 英尺乘 4 英尺的泡沫绝缘材料。泡沫被涂成黑色乳胶黑色。它必须是乳胶,因为普通喷漆会溶解泡沫!(我很难找到!)所有面板的背面都有螺丝安装座,您可以将支架拧入其中。我使用了男性/女性对峙,所以两个可以拧在一起。然后我将它们推入泡沫中,直到外部支座完全位于泡沫内部。当一切都在正确的位置时,我把它们拉出来,在每个孔中放一些埃尔默胶水,然后更换面板。这种方法可将面板牢固且永久地固定到位。 但是,在完成电气连接之前不要使用胶水,尤其是 5 伏电源。 在将面板粘合到位后,尤其难以连接电源。将支架插入泡沫时要小心,以将面板紧紧地固定在一起。如果将它们紧紧地推在一起,它们会形成一个连续的大面板,但在面板之间留有间隙会产生非常不理想的外观。
我将 L 形支架放在连接 1 x 2 英寸木头的底部以形成支架。我还在顶部附上了一个把手。由于将任何东西固定到这种泡沫上都有些问题,我使用了超大螺丝并用 Elmer 胶水将它们固定在泡沫中。这种方法效果出奇的好。我可以通过顶部的单个手柄携带整个东西,而且我从来没有从相当脆弱的泡沫中拉出任何东西。
正如我已经说过的,硬件非常简单。四个面板均为双 LED、三色 64 x 32 像素 LED 显示屏。每个像素由一个红色和绿色 LED 组成。四个面板各有 2048 个像素和 4096 个可单独寻址的 LED 元件。每个面板都包含移位寄存器电路,因此所有 4096 个 LED 都可以仅通过 12 条 I/O 线进行控制。像素可以显示为黑色(即完全不亮)、红色、绿色或黄色(红色+绿色)。
我将面板两横两下安装,以获得横跨 128 个 LED 和高 64 LED 的显示器。
上面的照片显示了其余的硬件。Arduino Mega 安装在支架上,但除此之外,一切都只是热粘在泡沫上。(在低温下使用 2 温度胶枪。高温会熔化泡沫!)从 Mega 出来的电线迷宫然后分开,一半到顶部的两个面板,一半到底部面板。每个面板都配有 16 针带状电缆。一个用于将顶部的两个面板菊花链在一起。另一个用于菊花链底部的两个。另外两个连接到左侧面板的输入端,然后穿过泡沫上的孔到达背面,我们在此处使用面包板跳线连接到 Mega。
注意来自电源的红色和黑色电线。它们穿过其他孔到达每个面板中央的 5 伏电源端子。虽然看起来有点奇怪,但我使用 USB 充电器为 Mega 供电。(照片中它没有插入充电器。)当我想连接到我的电脑进行编程时,这让我很容易拔掉它并连接USB延长线。
天哪,我从哪里开始?我有大量用于此面板的软件。显然,其中一些对于特定应用程序来说是非常独特的,就像所有生成和解决迷宫的软件一样。但棘手的是为显示器本身提供动力的下划线例程,并且这些东西在每个特定应用程序中重复出现。这里最有趣的两件事是刷新显示的子例程,以及显示静态和滚动文本的子例程。
让我们从刷新子例程开始。这通常由定时中断调用,但由于我稍后会讲到的原因,我们在这里将 Mega 推到了极限,定时中断不起作用。这里使用 Mega 是因为它有很多 I/O 端口,但主要是因为它有 8K 字节的 RAM。虽然我可以存储每个双色 LED 的状态是两位,但使用整个字节会更快。但是对于 8192 个双色 LED,我们不得不在一个字节中存储多个 LED 状态。(否则,我们将在这张表上使用 100% 的 RAM!)
尝试刷新 16384 个单色 LED 已经够糟糕了,但是当刷新过程必须解压缩存储在单个字节中的多个 LED 的数据时,它会花费太长时间。即使使用直接端口访问和大量调整,完整的刷新周期也需要大约 19 毫秒。所以我们是按需刷新,而不是定时中断。Mega 完成了这项工作,但只是勉强!
第二个有趣的主题是显示文本并滚动它。我使用 8 x 8 位字体,它存储在程序内存中的表格中。我的静态和滚动文本子例程采用“Hello”之类的字符串输入,并将其转换为可在面板上显示的字体表中的数据流。让它滚动是一个额外的复杂问题,但子例程可以处理所有这些。你只需告诉它你想要滚动的字符串,你想要它滚动的位置,以及你想要滚动的颜色。
我在一个 ZIP 文件中包含了许多不同的程序或 Arduino 草图。它们都是多文件草图,在 Arduino IDE 中显示为一堆不同的选项卡。每个都包含一些特定于该特定应用程序的代码,以及显示本身的代码,例如文本字体和刷新例程。ZIP 中的 READ_ME 文件解释了有关该软件的更多详细信息。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !