5x5x5 LED 立方体
组件和用品
| × | 1 | ||||
| × | 125 | ||||
| × | 5 | ||||
| × | 1 | ||||
| × | 25 | ||||
| × | 1 | ||||
| × | 5 | ||||
| × | 1 |
必要的工具和机器
| ||||
| ||||
|
应用和在线服务
|
关于这个项目
简介
大多数人都喜欢 LED 立方体,但是像 8x8x8 这样的大立方体需要大量的构建和编程工作。小型(3x3x3 或 4x4x4)易于构建,因为它们不需要大量 LED,还因为它们不需要外部硬件(如移位寄存器和高端驱动器)来管理立方体。但它们真的和一个大立方体不一样。
从这个项目开始,我的目标是创建一个易于构建的立方体,然后创建足够酷的软件,使人们可以享受大立方体的感觉,而无需构建大立方体所需的所有苦差事。所以这是一个 5x5x5 立方体,可以直接由 Arduino Mega 供电,除了 5 个晶体管(用于将整个层 - 25 个 LED 的阴极接地)之外,没有任何辅助硬件的移位寄存器。为什么我要避免使用移位寄存器?因为它们对电线来说绝对是可怕的。 (我试过了。)如果你想使用它们,你真的需要设计和制造一块印刷电路板。
过去我为大立方体编写了大量代码,所以我改编了一堆现有的立方体动画来在这个 5x5x5 立方体上运行。
这实际上是这样的三个项目中的第一个。第二个在这里。它是一个 5x5x5 RGB 立方体,在设计上与这个立方体非常相似,但更难构建。第三个在这里 - 一个 8x8x8 的单色立方体,同样具有最少的外部硬件。
注意:在我进一步讨论之前,我不是第一个建议使用 MEGA 驱动的 5x5x5 立方体的人。 MEGA DAS 于 2017 年在这里发布了一个类似的项目。两个项目中的硬件几乎相同。我没看过 在我开始写这篇文章之前的一个,所以我的引脚是不同的,并且 电阻 价值观 是 不同,但除此之外,硬件几乎相同。我发布这个主要是因为我有很多编写立方体软件的经验。我希望我的软件能够说服一些人建造一个立方体,否则他们可能不会!
上面的视频是一个正弦波函数,其中振幅在 z 轴上,时间表示为距立方体中心的水平距离。在大立方体上这是一个很棒的经典,但在这个 5x5x5 上还不错!
我包括另外两个视频。两者都是一样的 - 5x5x5 立方体的 14 个动画。我不确定哪个更好,所以我都包括了。如果不是很明显,立方体看起来比在视频中更酷!
硬件
Mega 有很多数字 IO 引脚。我们使用 5 个将每层的阴极拉低,另外 25 个将阳极驱动到层内 25 个 LED 中的每一个。使用这种方法,Mega 实际上有足够的 IO 引脚来构建一个 6x6x6 的立方体。但另一个考虑,如果我们试图保持这个简单是权力。 Mega 的电流限制是每个引脚 40 毫安,所有引脚上总共 200 毫安。蓝色 LED 的正向压降约为 3 伏,我们的共阴极晶体管再压降 0.7 伏。因此,使用 5 伏电源和 180 欧姆电阻器时,每个 LED 将消耗 7.2 毫安电流。如果所有 LED 都同时亮起,则 25 个 LED/层会消耗 180ma。我们一次只打开一层,所以我们满足 Mega 的所有电流限制,只要我们使用 NPN 晶体管将一层中的所有阴极拉到地。这些晶体管之一的基极电流使 Mega 的总负载再增加 5 毫安,但我们将总负载保持在 200 毫安以下。在大约 185 毫安。因此,出于上述所有原因,我选择了 180 欧姆的电阻来与我们的 LED 配对。
上图显示了 Mega 的数字引脚如何连接到立方体。引脚 22 - 26 是驱动将 LED 阴极接地的晶体管的 5 个引脚。引脚 27-51 通过 180 欧姆电阻连接到一层中 25 个 LED 的阳极。
您可能想知道为什么这种引脚排列看起来有点混乱。我的软件使用直接端口访问而不是数字写入来配置阳极,即将层中的 25 个 LED 中的每一个设置为打开或关闭。这节省了大量时间,并且意味着 LED 的点亮时间比您花费大量时间进行数字写入时更长。因此,引脚排列的排列方式有助于组织对这些数字端口的引用,而不是实际的引脚编号。当我们开始使用软件时,会更多地了解这些。
立方体构造
关于如何构建立方体,无论其大小如何,都有很多意见。无论您采用何种方法,这项任务都是乏味的。并且您必须同时小心谨慎和耐心地获得良好结果。我将向您展示我是如何构建这个的,但如果您愿意,还有其他在线说明。
这个立方体的构造开始于引线形成并将 LED 焊接到 5 列中。然后通过将 5 列焊接在一起形成面板,最后通过将 5 个面板焊接在一起形成立方体。以前从未建造过立方体的人不会意识到建造一个完美的立方体是多么困难。导程角的小误差会迅速累积,即使间距的微小差异也很容易看到。因此,引线形成步骤至关重要。如果你花时间把它做对,你不会得到一个完美的立方体,但你会得到一个合理的立方体。
阳极是 LED 的较长引线,它们向下延伸,但它们需要弯曲到 LED 的一侧,以便可以将垂直排的 LED 阳极焊接在一起。阳极偏移和阴极引线必须相互成 90 度,如这些照片所示。
我个人觉得引线在手上形成既乏味又坚硬,所以我引线形成 25 个 LED,然后构建一个面板。您将需要某种夹具来制作柱子和面板。我使用 BlueTack(一种可重复使用的粘合剂)进行这种夹具。 LED 可以压入 BlueTack 并在焊接柱和面板时保持原位。缩进允许您以完全相同的间距重复这些过程。第一次通过时非常仔细地测量一切是很重要的。我在所有三个方向上的 LED 之间都使用了 0.6 英寸的间距,这样我的成品立方体就可以插入到具有标准 0.1 英寸孔间距的板上。
关于将 LED 焊接在一起的注意事项 :每个立方体制造商的噩梦都是建造一个立方体,然后在立方体内部发现一个冷焊点,你再也无法接触到它了!操作时要小心,确保您构建的每列 LED 上的焊点都完好。
完成每个面板后,就可以对其进行测试了。同样,我们这样做是因为在您的立方体完成后发现冷焊点或坏的 LED 将是灾难性的!
在软件中,我包含了一个测试面板的小草图。要执行此测试,您需要将 5 根垂直阳极引线连接到 5 个电阻器(330 欧姆或类似电阻),然后将这些电阻器连接到引脚 40-44(第 0 列阳极引脚)。然后将 5 个阴极引脚连接到通常用于驱动阴极的引脚 22-26。一个好的面板看起来像上面的视频。 (顺便说一句,我们还没有使用晶体管来驱动阴极,所以这个小测试程序将阴极驱动为低电平以打开 LED。一旦安装了晶体管,我们将做相反的事情,即驱动阴极高电平以打开在晶体管上,然后将阴极拉低。)
当我们构建并测试了 5 个面板后,我们就可以组装立方体了,但首先,我们必须通过插入和连接所需的所有电阻器和晶体管来准备电路板。
我将 180 欧姆电阻放在每个阳极列和阴极晶体管及其基极电阻旁边,放置在立方体和 Mega 之间的空间中。同样,阳极柱之间的间距在两个方向上均为 0.6 英寸,因此板上每个孔与阳极柱之间有 5 个空孔。
现在是将 Arduino 放在板上的好时机。如果你有支架,它可以安装在支架上。实际上,我只是用一小块塑料和一点胶水将我的 Mega 固定在板子上方约 1/4 英寸处。
此时,每个面板都连接到主板上。在焊接之前确保每个阳极柱确实在正确的孔中,因为在完成的立方体中即使是一个孔错误也会很明显。并确保所有面板都面向相同的方向,即所有阴极引线都从同一侧出来。
接下来,我们需要在每一层将面板相互连接起来,以便连接给定层中的所有阴极。这是通过一根拉直的镀锡铜线将一层中的五个阴极线连接在一起来实现的。
接下来,我们准备将每一层的阴极连接到主板上。上图中的圆圈显示了每一层的阴极连接并连接到晶体管集电极的位置。同样,我们使用的是拉直的镀锡铜线。
将电阻器的所有引线连接到 Mega 后,我们终于准备好测试成品立方体了。在软件中,我提供了一个草图来测试立方体。它将按顺序短暂点亮立方体中的每个 LED。由于您已经测试了每个面板,因此您此时看到的任何问题很可能与最近的阴极连接有关。所以你可能会发现一层不起作用或一层的一部分。同样,如果出现问题,您最喜欢的可能是冷焊点。
软件
立方体中每个 LED 的状态由一个名为 cube[ ][ ][ ] 的 5x5x5 全局字节数组定义。 1 表示 LED 点亮,0 表示 LED 熄灭。所以立方体的所有动画都是通过在cube[ ][ ][ ]中放置1和0来创建的。
任何立方体软件的核心都是刷新立方体的定时中断。我的中断例程在 setup() 中启动,然后驻留在程序的最后。每 10 毫秒调用一次。大约需要 6 毫秒。刷新多维数据集。剩下4毫秒。在每次刷新以执行主循环中的内容之间。
在刷新期间,每层开启 1.2 毫秒。每秒刷新 100 次。因此,任何打开的单个 LED 都会以 120 毫秒/秒或 12% 的占空比打开。每秒 100 次的速度足以让人眼看到它连续亮起,而 12% 的占空比足以使 LED 发光相当亮,不像它们连续亮起那么亮,但令人惊讶地接近.
为了尽可能缩短刷新周期并使 LED 点亮的时间最大化,我们避免浪费 digitalWrite 命令的时间,并使用直接端口访问来配置引脚。如果您查看中断例程中的代码,您将看到使用此直接端口的 25 行单独的行,这看起来不是很漂亮,但实际上比可能的几行代码快得多用于设置带有 digitalWrite 的引脚。
loop() 只是调用每个动画,遍历列表然后重新开始。每个动画都在自己的子程序中。一些动画例程调用其他例程。有关各种动画的解释,请参阅代码本身。还有一些所有动画都使用的实用程序,例如 clearCube() 关闭所有 LED,或 copyDown();它将每一层的内容向下移动到它下面的层,然后清除顶层。
您可以下载三种不同的草图。主要的包含您在视频中看到的 15 个动画。面板测试和立方体测试草图仅用于在建造过程中测试您的立方体。
代码
- 5x5x5 立方体软件
5x5x5 Cube 软件Arduino
包含 3 个草图:面板测试、立方体测试、以及包含全部 15 个动画的 The Show
无预览(仅限下载)。
定制零件和外壳
完全可选,但如果您可以使用 3D 打印机,并且想要在我的视频中看到的盒子,它是:示意图
基本原理示意图 显示立方体和 Mega 之间的确切联系制造工艺