动态三角形艺术
组件和用品
| × | 45 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要的工具和机器
| ||||
| ||||
|
关于这个项目
简介
该项目使用由 Arduino UNO 控制的 45 个 APA-106 可编程 LED。这些 LED 类似于可单独编程的 LED 灯条,因此我们使用 Adafruit 的 Neo-pixel 库来控制它们。 UNO 上的单个引脚对整个显示器进行编程,因为一条数据线连接到链中的所有 LED。
这个设计的灵感来自我早期的两个项目。我的第二个 5x5x5 RGB 立方体(另一个 5x5x5 RGB 立方体)使用 APA-106 可编程 LED,剩下大约 75 个额外的 LED。我本可以用它们建造一个 4x4x4 的立方体,但我最近建造了很多立方体 - 是时候做点别的了。我的伺服电机艺术项目是一个三角形,三角形设计创造了许多有趣的图案。所以这个项目使用 45 个 APA-106 LED 排列成三角形图案来进一步探索三角形艺术。
从硬件和软件的角度来看,这是一个相当简单的项目。让我们先看看硬件,然后看看软件。
硬件
硬件仅由 UNO 和 45 个 LED 组成。这些 LED 在全功率下非常明亮,所以我将整个显示器的亮度设置为 30,范围为 0 到 255。在那个级别,UNO 和所有 LED 都可以直接从 UNO 的 USB 输入供电,因此 1 安培 - 5 伏电源是可选的。
施工的第一步是在一块 1/4 英寸的胶合板上钻孔。电路板本身的每个边缘都是 12 英寸。 LED 在精心构建的等边三角形中间隔 1 英寸。 LED 是 8 毫米,所以我钻了 8 毫米的孔,使 LED 紧密贴合 - 它们压入后根本不会移动。
左上方是 APA-106 LED。长引线接地。数据输出是封装平坦边缘右侧的引线。左边的第一根引线是数据输入,数据输入和地之间的下一根引线是+5V。这 4 根引线如右图所示弯曲。地线末端有第二个弯曲——其目的只是为了识别地线,因为一旦它们都弯曲就很难看到它。
上图显示了电路板的接线方式。首先请注意,随着 LED 链接在一起,蓝色数据线向后移动。这意味着在奇数行中数据从左向右流动,而在偶数行中数据从右向左流动。这也导致奇数行与偶数行的电源轨不同。对于奇数行,地线上升,+5v 线下降,偶数行则相反。
上图显示了接线。这一切都是用 22 号裸镀锡铜线完成的。我收集了左侧的接地轨和右侧的 +5V 轨。你应该做相反的事情。我板上的每条数据线连接都必须通过电源轨,但如果将接地切换到右侧,将 +5v 切换到左侧,则数据线将无需交叉任何东西!
以上是接线的特写视图。请注意右侧的数据线如何穿过 5 伏电源轨的顶部。
上图显示了成品板。我用了一些小塑料片作为 UNO 的支架,然后用一点热胶将 UNO 安装在板上。
上面的照片显示了一个案例中的三角形。这是来自此处包含的 .stl 文件的 3D 打印。你也可以很容易地用胶合板建造一个。
软件
由于 Adafruit 的新像素库,软件非常简单。它为我们提供了 setPixelColor(# in the chain, color) 来定义任何一个 LED 的颜色,并且 show() 将整个显示器更新为最新的变化。该库使用一个无符号的 32 位数字来表示 LED 的颜色,分别为红色、绿色和蓝色的强度存储 8 位。我直接使用这个方案来增亮和调暗原色,但对于其他一切,我使用了我自己的简单色彩管理方案,从我的 LED 立方体借来。这是一个简单的方案,其中数字 1 到 42 代表彩虹调色板,添加 0 表示黑色(全部关闭)和 43 表示白色(全部打开)。
您可能已经注意到,在上面的接线图中,LED 的编号从顶部的 0 开始,编号从左到右逐行排列。这是我用来识别 LED 的编号系统。它不像数据线那样来回切换,所以我创建了自己的 setPixelColor 版本,它通过我的编号分配来引用 LED,并允许我使用我的 0 到 43 调色板指定颜色。
您在视频中看到的几乎所有动画或效果都是表格驱动的。一张桌子告诉你如何从顶角扫地。另外两个表将这种效果转化为另外两个角。另一个表格告诉你外面三角形的 LED,然后是中间的,然后是最里面的三角形。所有这些不同的表都存储在程序存储器而不是 RAM 中。我最初担心所有这些表会占用太多宝贵的程序空间。但事实证明,使用这种表方法非常有效,而且程序空间从来都不是问题。
程序或草图在 Arduino IDE 中分为四个文件或选项卡。第一个是声明、表格和设置例程。第二个是主循环,它简单地调出各种动画的列表。第三是动画本身。四是支持所有动画的通用函数或子程序。
在上面的视频中,您可以看到带有 15 个动画的原始节目。在重复之前,它会持续大约 3 分钟。然而,从那以后,我扩展了节目,加入了一些新的动画,你可以在下面的视频中看到。
上面视频中的所有动画都是通过调用一个名为 rotation() 的子程序完成的。三角形由 24 个 LED 的外三角形、15 个 LED 的中间三角形和 6 个 LED 的内三角形组成。这三个数字的公分母是120。所以120步我们可以将整个三角形的内容旋转360度。这就是rotate() 例程所做的。改变起始模式,改变旋转方向,改变旋转速度,你就会得到上面视频中看到的所有效果。
下载中的节目现在包括原始节目以及上面的所有动画,制作一个包含 26 个动画的节目,在重复之前持续 5 分钟。
代码
- Art Triangle 的 Arduino 代码
艺术三角的Arduino代码Arduino
这是一个包含测试例程的 zip 文件、一个包含 26 个动画的节目以及使用 Neo-pixel 库的说明无预览(仅限下载)。
定制零件和外壳
外壳的 .stl 文件示意图
制造工艺