Lumini 8x8矩阵连接指南

贡献者: 英格兰蜥蜴
喜爱的 最喜欢的

介绍

这个Lumini 8x8矩阵这是一个很好的方法来增加一个正方形的光几乎任何东西,或者甚至制作一个自定义形状的屏幕。Lumini生产线使用的LED与我们的鲁梅纳蒂板,这个APA102,就在一个较小的,2.0x2.0 mm包装。这使得像素密度非常低,因此,一个像素更少的屏幕。LuMini Matrix将64个led封装在一平方英寸内!

亚博官网Sparkfun Lumini LED矩阵-8x8(64 x APA102-2020)

亚博官网Sparkfun Lumini LED矩阵-8x8(64 x APA102-2020)

com - 15047
25.95美元

在本教程中,我们将讨论如何将lumini矩阵连接到更多的lumini矩阵以及其他基于apa102的产品。我们将在软件中查看如何绘制一个灯光矩阵,这样我们可以在动画中获得一点创造性。当你把越来越多的灯串在一起时,我们会考虑一些事情,我们还将介绍一些整洁的照明模式,使您远离标准的彩虹模式(如果您有1600万种颜色,为什么要使用255种)。

所需的材料

为了跟随本教程,你需要以下材料。但你可能并不需要一切,这取决于你拥有什么。把它加入你的购物车,通读指南,并根据需要调整推车。

选择微控制器

你需要一个微控制器来控制一切,然而,当选择一个来控制一吨led时,有一些事情需要考虑。第一件事是,尽管他们不必在特定的时间进行操作,APA102 LED可传输数据真的很快对于一个领导,20兆赫快!所以您应该使用一个足够快的微控制器来利用这个能力。另一个需要考虑的是LED帧占用的RAM数量;特别是当你开始进入更高的LED计数。每个LED在RAM中占用3字节的空间。这听起来不是很多,但是如果你控制5000个led,您可能需要比传统的红板内存多一点的内存。下面的图表概述了可能开始出现内存问题的LED的数量。请记住,这些是非常慷慨的估计,并将根据声明的其他全局变量而减少。

微控制器 马克斯领导的 时钟速度
亚博官网Sparkfun红板 六百 16兆赫
Arduino超级2560 2600 16兆赫
亲微 七百 16兆赫
亚博官网Sparkfun ESP8266东西 二万七千 160兆赫
亚博官网SparkFun ESP32东西(加) 97000年 160兆赫或240兆赫
很小的3.6 八万七千 180兆赫(240兆赫超频)

当涉及到这样的事情时,很容易选择ESP32或Teensy3.6,因为他们在时钟周期中有大量的开销来运行古怪的动画计算。然而,如果你的项目不全亚博官网是灯光,你只是把一个发光环扔到一个项目上作为指示器,亚博官网不太强大的微控制器就足够了。

这里是ESP32和Teensy 3.6的链接;否则,你可以看看目录中列出的其他微控制器。如果你想要这些板的标题,这里还有这些产品的链接。(*Teensy 3.6有24个接线板插脚,所以你可以使用4个光子头)

亚博官网SparkFun ESP32事

亚博官网SparkFun ESP32事

dev - 13907
21.95美元
六十
很小的3.6

很小的3.6

dev - 14057
29.25美元
十三
ESP32东西可堆叠收割台套件

ESP32东西可堆叠收割台套件

prt - 14311
1.50美元
光子可堆叠集管-12针

光子可堆叠集管-12针

PRT-14322
0.50美元

选择电源

在大多数情况下,你的LED装置会拉出比你的电路板能处理的更多的电流。根据亮度和动画,100-250个LED的任何地方对您的电路板的电压调节器来说都太多了,所以,你应该挂上一个甜蜜的5伏电源,这是有足够的功率在小屋为你的所有LED的。这里有一些5V电源开始:

电源- 5.1V DC 2.5A (USB Micro-B)

电源- 5.1V DC 2.5A (USB Micro-B)

托尔- 13831
7.95美元
十六
平均井开关电源-5 Vdc,20A

平均井开关电源-5 Vdc,20A

TL—14098
25.95美元
平均LED开关电源- 5VDC,8A

平均LED开关电源- 5VDC,8A

托尔- 14602
19.95美元
平均LED开关电源- 5VDC,5

平均LED开关电源- 5VDC,5

托尔- 14601
14.95美元

你可以用LED的电量乘以60ma (0.06 A)来估计你的电源的大小,60ma是LED在全白状态下运行所需要的电流。此计算将为您提供LED可获得的最大功率。然而,大多数时候,这严重高估了你最终会消耗的能量。而不是计算最大电流图,我通常喜欢在台式电源使用它将运行的最亮的动画,然后加上20%或30%给自己留一点空间如果我想在未来提高亮度。

附加硬件

您可能还需要一些焊接设备和4.7μF SMD电容器(603封装)。电容器将用来解耦电源。这将减少电源线中的高频噪声,并补偿由于开关设备的电流需求变化而导致的电压下降。603封装可能有点难焊接,一套好的镊子会有帮助的。

连接线-种类(实心,22 AWG)

连接线-种类(实心,22 AWG)

prt - 11367
16.95美元
二十九
亚博官网Sparkfun初学者工具包

亚博官网Sparkfun初学者工具包

TL—1468 1
54.95美元
镊子-弯曲(静电放电安全)

镊子-弯曲(静电放电安全)

TL—10602
3.95美元
5
电容4.7uF - SMD(10片)

电容4.7uF - SMD(10片)

COM—15169
1.95美元

建议阅读

如果你不熟悉下面的概念,我们建议在继续之前先查看这些教程。

发光二极管,光,Power

灯光是电气工程师的有用工具。对于许多项目来说,理解光与电子之间的关系是一项基本技能。亚博官网

如何为项目提供动力亚博官网

帮助您确定项目电源需求的教程。亚博官网

发光二极管(led)

亚博在线娱乐官网了解led的基本知识以及一些更高级的主题,以帮助您计算包含许多led的项目的需求。亚博官网

电力

电力概况,能量传递速率。我们会讲到权力的定义,瓦,方程,和权力的评级。教程的乐趣!

焊接基础

如何焊接:通孔焊接

本教程涵盖了关于通孔焊接的所有知识。

如何焊接:铸造安装孔

说明如何焊接铸型孔(或铸型)的教程。如果需要将一个模块或PCB焊接到另一个PCB上,这可能会派上用场。集成WiFi和蓝牙模块使这些等级制变得越来越流行。

如何使用跳线板和PCB跟踪

处理印刷电路板跳线垫和痕迹是一项基本技能。亚博在线娱乐官网了解如何切割印刷电路板痕迹,在焊盘之间添加一个焊接跨接器以重新布线连接,如果痕迹损坏,用绿线法修复痕迹。

硬件概述

输入输出焊盘

Lumini矩阵由每个电路板背面的几个焊盘供电和控制。每块板都有一套垫板5VGND(地面)一套垫子(数据)CI(时钟输入),和一套垫子(数据)一氧化碳(时钟输出)。这些焊盘如下图所示。

I / O垫

Lumini矩阵8x8 I/O垫。

APA102

这个APA102是一个8位颜色(256色)和256级灰度的可寻址RGB LED。这基本上意味着你可以告诉每个LED你想要显示的颜色和亮度。

APA102显微镜下发光

APA102在显微镜下发光。点击放大图像。

led采用由时钟线和数据线组成的两线通信协议。虽然这需要比标准WS2812B可寻址LED多一根电线,其优点是与LED的通信变得有些时间无关,让你不用很长时间就能完成这些任务,精确定时的数据流。

领导的索引

每一个matix就像一串LED。led的索引(或编号)从左到右移动,从下到上,在LED正面,如下图所示。

用于LuMiniMatrix 8x8的LED索引

用于Lumini矩阵8x8的LED索引(左:正面或面向LED的一面,右:回来)。点击放大图像。

电容垫

在更大的安装中,你可能需要在电源和地面之间添加一个解耦电容,以防止在同时打开大量led灯时电压下降。下面概述了添加此可选电容器的位置。

帽斑

LuMini矩阵8x8电容器衬垫。

我们推荐下面的4.7微F电容器。如果你以前从未做过表面安装焊接,这部分可能有点棘手,但是看看我们的SMD提示和技巧就这么做。

美国四分之一的电容器

4.7微F电容器四分之一的尺寸比较。

注意:你只需要电容器一个设置,而不是每个板在你的安装。

散热

与大多数大功率LED一样,在Lumini矩阵8x8上使用的APA102 LED产生大量热量。为了防止led损坏自己和电路板,地平面(板的背面/底层)用于散热。隔板也与地面连接,可用于更大的散热。

硬件组装

焊接到LuMini基体

将导线焊接到LuMini Matirx的垫片上非常简单。诀窍很简单,就是在试图将焊盘和导线焊接在一起之前,先对两者进行预焊。然后,将导线压到焊盘上,然后进行焊接!如果您有点困惑,请查看下面的gif。

将焊丝焊接到板上

将焊丝焊接到板上。

选择针

APA102 LED采用类似spilike的协议进行控制,所以通常联系是一个很好的练习CI关于Lumini矩阵SCLK在你的微控制器上,并连接莫西。然而,这个设置不是必需的,你还可以将数据和时钟连接到你的微控制器上的大多数插脚上。继续,确定要使用的销,并将数据和时钟线焊接到微控制器中。

    连接到一个SparkFun ES亚博官网P32的东西

    在下面的例子中,我们将使用 亚博官网SparkFun ESP32事。对于硬件连接,这个 5V线路连接到 VUSB引脚, GND连接到 GND引脚, 连接到引脚 十六,和 CI连接到引脚 十七
    例如,插脚连接

    销连接亚博官网SparkFun ESP32事下面的例子。点击矩阵面板接线图。

创建更大的安装

现在我们知道了如何焊接这些焊盘,我们可以开始制作一个铝矩阵网格,或者将它们与其他基于APA102的产品绑定。要做到这一点,我们只需要焊接一氧化碳一个矩阵面板到CI下一个矩阵面板。下面,是一个图像,多个矩阵焊接在一起形成一个更大的显示。

蜂窝焊接2x2矩阵

I/O焊盘的槽焊。

故障排除提示:可以用一对堤防(对角钢丝钳)夹住支架安装点。你可能需要用沙子或锉刀把边缘磨平,因为斜切刀会留下粗糙的边缘。

软件安装

注意:此示例假定您正在桌面上使用最新版本的Arduino IDE。如果这是你第一次使用Arduino,请参阅我们的教程安装Arduino IDE。如果您以前没有安装过Arduino库,请浏览我们的安装指南。

我们将利用曾经流行的扣紧图书馆控制我们的鲁米尼矩阵。因此,请点击下面的按钮或搜索,从下载库开始。扣紧在Arduino图书馆经理那里。

下载FASTLED库(ZIP)

点亮它

亚博官网SparkFun还编写了一些特定于戒指的示例代码来帮助您入门。这些示例草图可以在LuMini 8x8 GitHub Repo在固件下。下载,单击下面的按钮。

下载示例草图

确保根据LED与微控制器的连接方式来调整管脚定义。

示例1-矩阵测试

格伦·拉森发明了拉森扫描仪作为电视连续剧的LED效果骑士骑士。在这个例子中,我们将开始重现这种效果,并添加一些颜色来调味。这个草图是测试所有LED的一个很好的方法。首先,我们首先为矩阵创建一个对象CRGB矩阵

语言:C包括
           
            //链中有多少个LED?根据你的设置改变NUM_BOARDS的值1 . define NUM_LEDS 64 * NUM_BOARDS //64 LED // LuMini矩阵需要连接两个数据引脚,这两个引脚在许多微控制器上很常见,但可以根据您的设置进行更改:定义DATA_PIN 16;定义CLOCK_PIN 17//定义ledsCRGB矩阵数组[NUM_LEDS];
           

然后,我们,使用初始化矩阵LEDS.addLeds下面的函数。注意到BGR在这份声明中,这是颜色顺序,有时,制造商将更改将接收到的数据输入PWM寄存器的顺序,所以你必须改变你的颜色顺序来匹配。我们使用的芯片组是BGR,但这在未来可能会改变。

语言:cvoid setup() {Serial.begin(115200);以“重启”);LEDS.addLeds
           
            (矩阵,纽曼LED;LEDS.setBrightness(32);}
           

在这个草图,全局亮度设置为三十二 LEDS.setBrightness(32);。虽然,此设置的整个范围是255,我们发现了三十二适合测试,因为它对眼睛比较好。即使所有LED都设置为白色,董事会将闲置的温度(90 - 95°F…取决于您的环境室温)。

我们的动画然后包含在fadeAll()函数,循环通过每个LED灯,并将其淡入之前亮度的一个百分比。我们的循环()然后集合是一个色相,我们增加色调,然后显示LED。在此之后,我们使用fadeAll()降低LED的亮度,这样LED就不会一直亮着。

语言:cvoid fadeAll() {for (int i = 0;我是NuxLeDS;i++)矩阵[i].nscale8(250);void loop()static uint8_t hue=0;//绕圆旋转for (int i = 0;我是NuxLeDS;i++)//将第i个LED设置为当前色调矩阵[i]=CHSV(色调++,150,255);//显示当前色调,然后递增。//显示LED fastLED.show();fadeAll();//降低所有LED的亮度,这样我们的LED就会在每一帧中淡出。//稍等片刻,然后循环并再次执行延迟(5);} }

如果你把所有的东西都连接好了,你的代码应该像下面的GIF。如果事情不是你所期望的,仔细检查你的线路。

示例1的动画

如果你做的一切都正确的话,你应该在Lumini矩阵上看到这个。

作为一个挑战,看看你是否能创建一个真正的拉森扫描仪。它只需要对示例代码进行一些修改。

例2 - RGB颜色选择器

在第二个示例中,我们将使用串行终端来控制矩阵显示的颜色。我们以相同的方式初始化所有内容。然后我们监听串行端口上的数据,解析从。中发送的整数串行监视器从Arduino IDE并将其放入相应的颜色(红色,绿色或蓝色。完成此任务的代码如下所示。

语言:C包括
           
            //链中有多少个LED?根据你的设置改变NUM_BOARDS的值1 . define NUM_LEDS 64 * NUM_BOARDS //64 LED // LuMini矩阵需要连接两个数据引脚,这两个引脚在许多微控制器上很常见,但可以根据您的设置更改define data pin 16 define clock 17crgb color;char colortoedit;//定义ledscrgb matrix的数组[num _leds];void setup()serial.begin(115200);以“重启”);LEDS.addLeds
            
             (矩阵,纽曼LED;LEDS.setBrightness(32);//Display our current color data  Serial.print("Red Value: ");以颜色[0]);serial.print(“绿色值:”);以颜色[1]);serial.print(“蓝色值:”);serial.println(颜色[2]);serial.println();void loop(){if (Serial.available()) //检查是否有新的串行数据。{colorToEdit = Serial.read();切换(colorToEdit) {case 'R': case 'R': color[0] = Serial.parseInt();打破;case“g”:case“g”:颜色[1]=serial.parseInt();打破;case 'B': color[2] = Serial.parseInt();打破;//显示当前颜色数据serial.print(“红色值:”);以颜色[0]);serial.print(“绿色值:”);以颜色[1]);serial.print(“蓝色值:”);serial.println(颜色[2]);serial.println();for (int i = 0;我是NuxLeDS;i++)矩阵[i]=颜色;快速显示();延迟(10);} }
            
           

继续上传这段代码,然后打开你的串行监视器波特率为十一万五千二百。它应该显示当前颜色值(R:0,克:0,乙:0)如果不是。

连续监测项

串行监视器条目(用于下面的动画R255 > r100g50b200 > r255g255b255

改变一个颜色的值是在发送颜色的字母(RG,或)后面跟着一个值255。例如,把红色到一半的亮度可以通过发送来实现R127。玩一玩,寻找你最喜欢的颜色。

例2的动画

如果你做的一切都正确的话,你应该在Lumini矩阵上看到这个。

故障排除提示:
  • 你可能会得到一些奇怪的反应,使用低值的RGB;大约50或更少。
  • 颜色项的字母不区分大小写。
  • 您还可以发送多个条目。尝试发送R100B50G200r0,B150,G150在串行监视器中。
  • CRGB是FastLED库中定义的对象。如果查找对象定义,你可以玩弄它在代码中的运行方式。例如,修改此行代码:
      矩阵[i]=crgb::白色;
    将整个面板颜色设置为白色。

例3 - HSV颜色选择器

第三个例子和第一个非常相似,我们使用串行终端选择颜色。然而,在这个例子中,我们正在和an合作HSV颜色空间。这幅素描与前一幅基本相同,只有我们发送H年代V而不是rGb。上传下面的代码,在搜索你最喜欢的颜色时四处游玩。

语言:C包括
           
            //链中有多少个LED?根据你的设置改变NUM_BOARDS的值1 . define NUM_LEDS 64 * NUM_BOARDS //64 LED // LuMini矩阵需要连接两个数据引脚,这两个引脚在许多微控制器上很常见,但可以根据您的设置更改定义数据定义时钟定义时钟定义时钟定义颜色=CHSV(0,255,255);char colortoedit;//定义ledscrgb矩阵的数组[num_leds];void setup()serial.begin(115200);以“重启”);LEDS.addLeds
            
             (矩阵,纽曼LED;LEDS.setBrightness(32);//显示当前颜色数据serial.print(“hue:”);以color.hue);Serial.print("Saturation: ");以color.sat);serial.print(“值:”);以color.val);void loop(){if (Serial.available()) //检查是否有新的串行数据。{colorToEdit = Serial.read();switch(colortoedit)case'h':case'h':color.hue=serial.parseInt();打破;case's':case's':color.sat=serial.parseInt();打破;case 'V':      case 'v':        color.val = Serial.parseInt();打破;//显示当前颜色数据serial.print(“色调:”);以color.hue);Serial.print("Saturation: ");以color.sat);serial.print(“值:”);以color.val);serial.println();for (int i = 0;我是NuxLeDS;i++)矩阵[i]=颜色;快速显示();延迟(10);} }
            
           

再一次,四处游玩,寻找你最喜欢的颜色。我发现HSV比RGB空间更直观。

例4 -映射多个矩阵

LuMini矩阵可以很容易地用daisy链接来创建一个自定义大小的屏幕。在处理任何屏幕或LED矩阵时,您将希望能够调用某种函数XY(X)y)返回任意给定坐标下的LED编号。为了做到这一点,我们需要概述我们用菊花链连接矩阵的路径以及每个矩阵的方向。首先,让我们看看矩阵的路径。

2x2矩阵的汇编

已完成2x2矩阵的装配,并标记了矩阵图。第三个面板的方向应顺时针旋转90°(从面板前部)。点击图中显示了组件背面的焊接连接。

我在下图中焊接了4个铝矩阵。每个数字表示矩阵在链中的数字。我喜欢从左下角开始,但是你可以随意安排你的矩阵。然后我们需要编辑我们的matrixMap[moduleHeight][moduleWidth]对象来告诉代码每个矩阵的位置。请注意,表中的数字如何与上图中矩阵中的数字相同映射。

语言:C包括
           
            const int moduleheight=2;//显示高度,以lumini矩阵的个数测量const int modulewidth=2;//显示的宽度,以LuMini矩阵的个数来衡量//下面的矩阵表示我们整个LED显示屏,每个模块在链中的编号。我的数据流入左下矩阵(我的链中的矩阵0),//然后向右流入右下矩阵(我的链中的矩阵1),然后向上流入右上矩阵(矩阵2),最后流入其余矩阵3//下表应具有与完整多矩阵模块int matrixmap[moduleheight][modu相同的矩阵编号/位置路易丝]=3,2 },{ 0,1}};
           

然后我们需要调整代码中每个矩阵的方向,以便任何物理旋转的矩阵都能得到它在代码中旋转的像素。检查方向的最简单方法是首先更改int方向[moduleHeight*moduleWidth]到0,这是当Lumini矩阵正朝上和朝下时的默认方向。继续上传你的代码。最后一个矩阵应该有一条从上到下的线,而不是从左到右的线。

如果整个模块的方向正确,你会看到一行彩色从左向右滑动。如果你的矩阵中有一条直线朝不同方向滑动,记下线路在问题模块上滑动的方向。使用下表将您看到的方向与int方向[moduleHeight*moduleWidth]对象。

滑动方向(方向0) 方向编号
从左到右
从上到下
从左到右
自下而上

因为最后一个矩阵的方向是从上到下滑动的,我会像这样改变最后一个矩阵的方向。

语言:CINT方向[模块八*模块宽度]=0,0,0,1 };

示例4的动画

如果你做对了,你会在2x2矩阵上看到这个。

示例5-使用渐变

在最后一个例子中,我们将利用FastLED的palette对象(CRGBPalette16)创建和可视化矩阵上的调色板。我们和前面的例子有很多相同的初始化,只有这一次,我们还初始化了CRGBPalette16对象,该对象将与TBlendType这将告诉我们是否要将颜色混合在一起。这可以是线性混合未混合的。为了填充这个梯度,我们使用示例2和3来找到要放入渐变中的颜色。包含的渐变是在HSV空间中创建的一堆颜色,但是,如果您愿意,可以很容易地更改为RGB空间。您也可以通过取消对设置它等于的行的注释来使用任何预设选项板。currentPalette

语言:ctblendtype currentBlinging=linearBlend;crgbalette16 currentpalette=chsv(5,190年,255)CHSV(0)190年,255)CHSV(245255,255)CHSV(235)235,255)CHSV(225235,255)CHSV(225150,255)CHSV(16,150,255)CHSV(16,200年,255)CHSV(16,225,255)CHSV(0)255,255)CHSV(72)200年,255)CHSV (115225,255)CHSV(40)255,255)CHSV(35岁,255,255)CHSV(10)235,255)CHSV(5)235,255)//CurrentPalette=RainbowColors_p;//CurrentPalette=RainbowStripeColors_p;//CurrentPalette=OceanColors_p;//CurrentPalette=CloudColors_p;//CurrentPalette=LavaColors_p;//CurrentPalette=ForestColors_u;//CurrentPalette=Partycolors_p;

然后我们使用ColorFromPalette函数的作用是将渐变中的颜色放到LED矩阵中。

语言:cvoid loop()for(uint8_t x=0;x<矩阵宽度;x++)uint8_t gradientindex=(x*2)+rotation;//乘以2以显示矩阵上(uint8_t y=0)的更多渐变;y<matrixheight;Y++)矩阵[x y(x,y)]= ColorFromPalette(currentPalettegradientIndex,亮度,currentBlending);快速LED.show();旋转+ +;延迟(30);

玩转调色板中的颜色,直到你满意为止。如果一切连接正确,您的LED矩阵应该像下面的GIF。

示例5的动画

如果你做的一切都正确的话,你应该在Lumini矩阵上看到这个。

附加的例子

FastLED库中还包含了许多其他示例。这些可以通过打开文件>实例>自定义库中的示例>扣紧

资源和进一步发展

现在你已经成功地启动了LuMini,是时候把它纳入你自己的项目了!亚博官网有关Lumini矩阵的更多信息,看看下面的链接。

或者,您可以查看我们的其他Lumini产品:

新!

铝环连接指南

Lumini环(APA102-2020)是可用的最高分辨率LED环。
新!

LumiDrive连接指南

LumiDrive的LED驱动程序是Sparkfun在微亚博官网控制器上对所有事情的探索。使用Sparkfu亚博官网n LumiDrive,您可以直接从板本身控制和个性化整个apa102s链。

这里有更多的项目和想法的教程:亚博官网

Lumenati连接指南

Lumenati是我们基于APA102C的可寻址LED板系列。我们将向您展示如何为您的项目带来亮点!亚博官网

使用Artnet DMX和ESP32驱动像素

在本教程中,我们将了解如何使用资源竞技场,一个流行的视频骑师软件,控制定制的Artnet DMX设备。

开始使用Smartled Shield for Teensy

在本教程中,我们将把不同的RGB LED矩阵面板连接到PixelMatix的智能LED屏和Teensy上。

DMX概论

DMX512是照明和舞台设计的行业标准。无论是控制灯光,马达,或激光器,DMX512有许多用途。在本教程中,我们将介绍DMX512(具有512条信息的数字多路复用)。

查看以下博客文章,了解更多LED乐趣: