之前我们介绍过一款非常炫酷的《熔岩特效灯》。这期教程中我将为大家介绍一款更易上手的灯。
这款 LED 矩阵彩灯使用标准的 WS2812b LED 灯,构成一个圆柱形的灯体,最后由木制边框组合而成。效果相当棒!
先看下面的视频。
laser_cylinder.svg
[444991 Bytes at 2019-04-02, 247 次下载]
matrixtest.ino
[2586 Bytes at 2019-04-02, 208 次下载]
790x384 纸板×若干
WS2812b LED×100(30个/米)
树莓派(Raspberry Pi)或 Arduino×1
木制贴片或其他柔韧行强的材料×若干
电线×若干
主要的设计参数就是所使用材料的厚度。
1、该版本使用了 1.5 毫米的纸板,不仅容易切割而且非常便宜。如果改变厚度, CAD 数据也要随之更改。
2、3D 设计有助于避免在组装过程中的出现问题。
3、激光切割,部件的摆放方式必须方便激光机切割,纸板使用的大小为 790x384 厘米。
4、推荐使用 Inkscape 这个工具。附带的 SVG 文件包含了项目所有部件的信息。
注意:我通过用户参数规定的厚度修改了 Fusion360 的型号,你也可调整材料的厚度并生成自己的激光切割文件。
模型的链接为: https://a360.co/2OC2kvZ
激光切割的 SVG 文件请在项目文件库中下载。
激光切割出以下部件:
C形的水平部件×12
竖形的卡槽×18
垂直连接部件×2
LED 承载部件×20
8个C形,9个卡槽和1个连接部件可以组合成一个半圆形的造型。
在此步骤中,所有部件用卡槽连接起来,不使用胶水。
每一个 LED 灯条上有五个 LED 灯,并用胶水粘到载体上。
1、灯带的 DI(数据输入)和 DO(数据输出)引脚以Z字形的方式连接在一起,将第一条带的 DO 与下一条纹的 DI 连接,依此类推。
2、每个半圆形的需要 10 条灯带。5V 和 GND 仅在条带的一侧连接。电线的长度与矩阵的条带所需布线的长度相匹配。
3、将 LED 灯条安装到位之前,必须将所有结点用胶固定好。
4、将十个灯条用胶水固定到每半个圆柱体上。一个半圆的 DO 连接到另一半圆的 DI。第一个半圆的DI 将是 Raspberry Pi 或 Arduino 的输入。
为确保一切正常,将对 LED 彩灯进行第一次测试。使用 Arduino 和 Neopixel 应该是最简单的方法。
测量圆柱体的直径和高度后,将木质饰面安装到位。
为了在 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 等)。在模拟模式下,圆柱体显示为 5x20 像素矩阵。
2、PI=True,这将驱动树莓派的 GPIO 18# 引脚。你可以使用参数自由添加其他效果。
文本使用了3x5像素的字体,由于高度有限,不是所有字母都可以完整的显示。
希望你喜欢这个项目。