输出一个由*组成的三角形图案_<初学者必看>Arduino制作的动态多彩灯光艺术三角形...

9b1b1dca8e90ace4f60333b99e12a65e.png

用平均分布在一个三角形上的45只RGB彩色LED创造了五彩缤纷的灯光艺术效果。非常适合初学Arduino编程的童鞋和搞艺术的非专业创客们。


知乎视频​www.zhihu.com

项目概述

该项目使用由Arduino UNO控制的45个APA-106可编程LED。 这些LED类似于可单独编程的LED灯带,因此我们使用Adafruit的Neo-pixel库来控制它们。 UNO上的单个引脚可对整个显示器进行编程,因为一条数据线可连接到链中的所有LED。

这个设计的灵感来自于5x5x5 RGB光立方体,它使用APA-106可编程LED,该项目使用45个以三角形图案排列的APA-106 LED来探索三角形艺术。

从硬件和软件的角度来看,这都是一个相当容易的项目,非常适合初学Arduino编程的童鞋和搞艺术的非专业创客们,让我们先看一下硬件,然后看软件。

组件和材料

APA-106可编程RGB LED 45颗

94c9f7aa61f92c895b7876673904d920.png

22号镀锡铜线 1根

07a5372164709fc47172a4e3285e58ee.png

Arduino UNO & Genuino UNO开发板

80c2a6f872cceda1e31ef9d58c2cff62.png

胶合板三角形,边长12英寸,厚度:1/4英寸 1块

必备的工具和机器

烙铁(通用)

d8cf4e8132c76ad9a5294450809123da.png

热熔胶枪(通用型)

e7b6d3b0279ef6687136d7d430e6bb8e.png

散热夹

3a90e605b3900cd56f4ee160d95c86b4.png

硬件部分

硬件只需要UNO和45只LED灯。 这些LED在全功率下异常发亮,因此我将所有LED灯的亮度设置为0到255的30。 在此级别上,UNO和所有LED都可以直接由UNO的USB输入供电,因此可选1安培-5V的电源。

32738764b0232f30846c95ee4b13ff76.png

施工的第一步是在一块1/4英寸的胶合板上打孔。 木板本身在每个边缘上都是12英寸。 LED以精心构造的等边三角形隔开1英寸。 LED为8毫米,所以我钻了8毫米的孔,使LED紧密配合-压入时它们根本没有移动。

1f855136712ff5a2d584f92c9fa1863d.png

左上方是APA-106 LED。 长引线已接地。 数据输出是位于封装平坦边缘右侧的引线。 左侧的第一个引线是数据输入,而数据输入和地之间的下一个引线是+ 5V。 这4条引线如右图所示弯曲。 接地线的末端有第二个弯曲-它的目的只是识别接地线,因为一旦它们全部弯曲就很难看到。

a33dbb29e1fcaee0d6813903ad3e23f9.png

上图显示了电路板的接线方式。 首先请注意,随着LED链接在一起,蓝色的数据线向后移动。 这意味着在奇数行中,数据从左向右流动,而在偶数行中,数据从右向左流动。 这还会导致奇数行与偶数行的电源轨不同。 对于奇数行,接地引线上升,而+ 5v引线下降,偶数行则相反。

1c7fcc5e61df2c87188a6f117ef5dd16.png

上面的照片显示了接线。 全部使用22号裸锡镀锡铜线完成。 我收集了左侧的接地轨和右侧的+ 5V轨。 您应该做相反的事情。 板上的每个数据线连接都必须通过电源线,但是如果您将地线切换到右侧,将+ 5v切换到左侧,数据线不会跨越任何东西!

a177c689c6a9a50c0d2434c22af3b24b.png

上面是接线的特写视图。 请注意,右侧的数据线如何与5伏电源线的顶部交叉。

1c5c8e0347fed1b48b6d8cc5219ceee7.png

上面的照片显示了成品板。 我用一些小塑料片作为UNO的支架,然后用少许热胶将UNO固定在板上。

软件部分

多亏了Adafruit的新像素库,软件变得非常简单。它为我们提供了setPixelColor(链中的#,color)来定义任何一个LED的颜色,而show()则根据最新的更改更新整个显示。该库使用一个无符号的32位数字来表示LED的颜色,分别存储8位的红色、绿色和蓝色的强度。我使用这个方案直接用于原色的增亮和调暗,但是对于其他的,我使用我自己的简单的色彩管理方案,从我的LED立方体借鉴。这是一个简单的方案,,其中数字1到42代表彩虹调色板,为黑色(全部关闭)添加0,为白色(全部开启)添加43。

您可能已经注意到,在上面的接线图中,led的编号从顶部的0开始,数字按行从左到右排列。这是我用来标识led的编号系统。它不像数据线那样来回切换,所以我创建了自己版本的setPixelColor()函数,它通过我的数字分配来引用led,并允许我使用我的0到43调色板指定颜色。

您在上面视频中看到的几乎所有动画或效果都是表驱动的。其中一个表告诉您如何从左上角进行扫描。另外两张桌子将这种效果传递到另外两个角上。另一个表告诉您外部三角形的led,然后是中间三角形,然后是最内部的三角形。所有这些不同的表都存储在程序内存而不是RAM中。我最初担心所有这些表将占用很多宝贵的程序空间。但是使用这种表方法被证明是非常有效的,而且程序空间从来都不是问题。

在Arduino IDE中,程序或示例被分成四个文件或标签。第一个是声明、表和设置例程。第二个是主循环,它只是调出各种动画的列表。三是动画。有15个动画组成一个节目,持续3分钟,然后重复。四是支持所有动画的通用函数或子程序。

代码

这是一个zip文件,包含一个测试例程、一个包含15个动画的演示以及使用Neo-pixel库的说明。

链接:https://pan.baidu.com/s/1vkhkhpW5jWOTdRnzxYuoig

提取码:4n0d

原理图

7a58862de15c0eee428c93b8d85f1eb4.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TensorFlow是用于机器学习的端到端开源平台。它拥有一个全面而灵活的生态系统,其中包含各种工具、库和社区资源,可助力研究人员推动先进机器学习技术的发展,并使开发者能够轻松地构建和部署由机器学习提供支持的应用。 TensorFlow最初是由Google机器智能研究组织内Google Brain团队的研究人员和工程师开发的,用于进行机器学习和深度神经网络研究。该系统具有足够的通用性,也可以适用于多种其他领域。 TensorFlow提供稳定的Python和C++ API,以及其他语言的非保证向后兼容API 。 轻松地构建模型 TensorFlow提供多个抽象级别,因此您可以根据自己的需求选择合适的级别。您可以使用高阶Keras API构建和训练模型,该API让您能够轻松地开始使用TensorFlow和机器学习。 如果您需要更高的灵活性,则可以借助即刻执行环境进行快速迭代和直观的调试。对于大型机器学习训练任务,您可以使用Distribution Strategy API在不同的硬件配置上进行分布式训练,而无需更改模型定义。 随时随地进行可靠的机器学习生产 TensorFlow始终提供直接的生产途径。不管是在服务器、边缘设备还是网络上,TensorFlow都可以助您轻松地训练和部署模型,无论您使用何种语言或平台。 如果您需要完整的生产型机器学习流水线,请使用TensorFlow Extended (TFX)。要在移动设备和边缘设备上进行推断,请使用TensorFlow Lite。请使用TensorFlow.js在JavaScript环境中训练和部署模型。 强大的研究实验 构建和训练先进的模型,并且不会降低速度或性能。借助Keras Functional API和Model Subclassing API等功能,TensorFlow可以助您灵活地创建复杂拓扑并实现相关控制。为了轻松地设计原型并快速进行调试,请使用即刻执行环境。 TensorFlow还支持强大的附加库和模型生态系统以供您开展实验,包括Ragged Tensors、TensorFlow Probability、Tensor2Tensor和BERT。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值