用树莓派或 Arduino 制造 LED 矩阵彩灯

MAKER:maketvee/译:趣无尽 Cherry(转载请注明出处)

之前我们介绍过一款非常炫酷的《熔岩特效灯》。这期教程中我将为大家介绍一款更易上手的灯。

这款 LED 矩阵彩灯使用标准的 WS2812b LED 灯,构成一个圆柱形的灯体,最后由木制边框组合而成。效果相当棒!

先看下面的视频。

材料清单

790×384 纸板×若干(这里用的是 1.5mm 椴木板)

WS2812b LED×100(30个/米)

树莓派(Raspberry Pi)或 Arduino ×1

木制贴片或其他柔韧行强的材料×若干

电线×若干

外形设计和激光切割

主要的设计参数就是所使用材料的厚度。

1、该版本使用了 1.5 毫米的纸板,不仅容易切割而且非常便宜。如果改变厚度, CAD 数据也要随之更改。

2、3D 设计有助于避免在组装过程中的出现问题。

3、激光切割,部件的摆放方式必须方便激光机切割,纸板使用的大小为 790×384 厘米。

4、推荐使用 Inkscape 这个工具。附带的 SVG 文件包含了项目所有部件的信息。

注意:我通过用户参数规定的厚度修改了 Fusion360 的型号,你也可调整材料的厚度并生成自己的激光切割文件。

模型的链接为:https://a360.co/2OC2kvZ

激光切割的 SVG 文件请在项目文件库中下载。

激光切割、局部组装

激光切割出以下部件:

C形的水平部件×12

竖形的卡槽×18

垂直连接部件×2

LED 承载部件×20

8个C形,9个卡槽和1个连接部件可以组合成一个半圆形的造型。

在此步骤中,所有部件用卡槽连接起来,不使用胶水。

LED 接线

每一个 LED 灯条上有五个 LED 灯,并用胶水粘到载体上。

1、灯带的 DI(数据输入)和 DO(数据输出)引脚以Z字形的方式连接在一起,将第一条带的 DO 与下一条纹的 DI 连接,依此类推。

2、每个半圆形的需要 10 条灯带。5V 和 GND 仅在条带的一侧连接。电线的长度与矩阵的条带所需布线的长度相匹配。

3、将 LED 灯条安装到位之前,必须将所有结点用胶固定好。

4、将十个灯条用胶水固定到每半个圆柱体上。一个半圆的 DO 连接到另一半圆的 DI。第一个半圆的DI 将是 Raspberry Pi 或 Arduino 的输入。

第一次测试

为确保一切正常,将对 LED 彩灯进行第一次测试。使用 Arduino 和 Neopixel 应该是最简单的方法。

木质装饰

测量圆柱体的直径和高度后,将木质饰面安装到位。

Raspberry Pi、Arduino 以及电源

为了在 Python 中编写漂亮的矩阵效果,可以使用 Raspberry Pi。Raspberry Pi Zero 就可以,它通过 GPIO 引脚 18 连接到矩阵,并通过 74HCT245 电平转换器,使树莓派的 3.3V 适应 WS2812 的 5V。当使用更多的 Neopixel / WS2812 LED 灯时,将会使用更大的电容(2200 uF)和串联电阻(470 欧姆)。

电源

100个 WS2812b LED 的最大功率为 100x60mA = 6A。当然,如果降低亮度,功率损耗也会大大降低。5V 电源能够达到你想要的亮度。

Arduino

该矩阵可直接在 Arduino 设备上使用 Adafruit 的 NeoPixel 库和 NeoMatrix 库。如果你使用下面的用例,则必须修改 PIN 并初始化:

NeoMatrix:

Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(20, 5, PIN,NEO_MATRIX_TOP + NEO_MATRIX_LEFT+ NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG, NEO_GRB + NEO_KHZ800);

你可以使用 Adafruit 的 GFX 库,可以下载高度为5像素的不同的点阵字体。请使用附带的 Arduino sketch 作为起点(使用 PIN 4 作为矩阵的起点)。它是 Neomatrix 示例草图的改编版本。

NeoPixel:

Adafruit_NeoPixel strip = Adafruit_NeoPixel(100, PIN, NEO_GRB + NEO_KHZ800);

所需文件请在项目文件库中下载。

模拟

Python 源代码可在 Github 库下载到。

编程

这里设置了两种模式。在 cylinder.py 的开头定义了 PI 变量。

1、PI=False,是模拟模式,将启动一个 Python 程序用来测试所有的动画效果。需要先安装程序依赖的所有库(如 pygame,numpy 等)。在模拟模式下,圆柱体显示为 5×20 像素矩阵。

2、PI=True,这将驱动树莓派的 GPIO 18# 引脚。你可以使用参数自由添加其他效果。

文本使用了3×5像素的字体,由于高度有限,不是所有字母都可以完整的显示。

希望你喜欢这个项目。

via