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像素的字体,由于高度有限,不是所有字母都可以完整的显示。
希望你喜欢这个项目。
太酷了
太炫酷了,我想仿制一个,其他材料都找到了,请问最外面包的木制纸板在哪里可以买到?谢谢!
淘宝搜索椴木板,然后找店家按照教程里面的图纸切割就好。
可以用灯笼纸,是薄的就行
外包的最好内部折射小的,不然相邻的格子窜色就会不美观
请问你的纸板用激光切割,怎么做的,因为我这里没有切割设备啊
请问木制饰面你是用的多厚的椴木板达到的这个效果?我在淘宝找到1.5mm和1mm的,可以么?还是需要更加薄的?另外我能在自己的博客转载你的文章么?谢谢!
1.5mm和1mm的都可以,如果用1mm的则需要自己改图纸。文中所用的是1.5mm的。
可以转载的,请保留我们的署名和链接。
你的博客能发我看看嘛,我没找到木制饰面,谢谢大佬
好酷!完全是小白的我好想也弄个这样的东西,但是到LED接线那就看不懂了。。。
打算先买个LED回家折腾折腾
LED接线要用焊锡,emm…..还要买个焊锡工具
我想问一下,矩阵模拟输出用什么东西看?
在桌面版下运行会出现GUI界面。
我是使用arduino的开发板
太酷了我准备实现这个东西,有没有一起探讨研究的.邮箱869133358@qq.com联系
木质装饰是在哪买的?
请问视频里随机填充并随机颜色的函数如何编写?
木质装饰是在哪买的?
请问如果用树莓派的话,PI=True时NeoPixel的库该如何导入啊,找了半天没看见这个库在哪里
同问,没这个模块
需要先 pip install rpi_ws281x
然后将rpi_ws281x里的neopixel.py放到项目同级目录下就ok
python版本为2.7,python3好像不兼容
Traceback (most recent call last):
File “cylinder.py”, line 16, in
from neopixel import *
ImportError: No module named neopixel
这里的源码有错误 那行的括号的位置不对
错误是哪一行的括号啊?应该放在哪里呢?
激光切割是在哪里搞定的?
用矢量图去淘宝找就可以.材质我用的椴木
大佬,有木有纸板图的矢量文件啊,淘宝店家不能用svg文件加工
我这里有文件 你发个邮件我转给你869133358@qq.com
这个项目很棒,已完成,踩坑很多.有问题可以发邮件给我869133358@qq.com,能帮都会帮的.
能否把那个使用 Arduino 的软件写入这部分剖析一下~化学实验小白鼠一枚,不太懂硬软件,不过想试一下
请问哪个大佬有cad图纸,能发我一份吗2455759365@qq.com,万分感谢
你好 我想做8*16的 但不会cad 有大佬能帮一下吗?
做完了吗?
我可以做CAD
这个用raspberry pi做的源码在哪里??求教!大佬
您好,邮件发你了,需要纸板的cad文件,麻烦发下,谢谢
rpi-ws281x 库安装了但是没有neopixel.py这个文件,我把cylinder.py 文件引入的neopixel 改成了rpi-ws281x.py但是报 can’t open /dev/mem permission defind 这个错误,我把/dev/mem的权限改成764后,程序报错Operation Not Permitted,请问我把cylinder.py 文件引入的neopixel 改成了rpi-ws281x.py是不是有问题?另外rpi-ws281x库没有neopixel.py怎么办?
记录下自己遇到的问题,大家有 遇到相同的可以参考:
1. neopixel找不到,pip install ws_281x库后找不到neopixel文件,可以去https://github.com/jgarff/rpi_ws281x/tree/master/python下载,然后把neopixel文件放到cylinder.py同级目录下就可以了。
2.can’t open /dev/mem/ permission defind 需要用sudo权限,但是用sudo python cylinder.py会报没有ws_281x模块,执行sudo pip install rpi_ws281x就可以了。
3.cylinder.py 文件里有错误在文件161 行 strip.setPixelColor(matrix[y*20+x],(Color(display[y][x]>>8)&0xFF, display[y][x]>>16, display[y][x]&0xFF))
更改成strip.setPixelColor(matrix[y*20+x],(Color(display[y][x]>>8&0xFF, display[y][x]>>16, display[y][x]&0xFF)))
以上就是目前遇到的所有问题及解决办法,希望能帮到遇到问题的人,目前还在研究led与树莓派的连线问题。
你好,我的CYLINDER.PY报错,报错行99行。
Use “-c” argument to clear LEDs on exit
ALSA lib pcm_hw.c:1903:(_snd_pcm_hw_open) card is not defined
Traceback (most recent call last):
File “cylinder.py”, line 223, in
main()
File “cylinder.py”, line 99, in main
DISPLAYSURF = pygame.display.set_mode((20*SIZE, 5*SIZE))
能不能请教一下电路接线问题
我做完了,有不明白的可以问我,共同交流
请教下 pi 3B+ 如何接线
请教一下供电的问题,能加下我QQ吗?862471496
淘宝上打印模板是880*450,我调整了下svg加了点备件:
dwg https://home.farboy.cn:5001/sharing/yOiLRSHmp
svg https://home.farboy.cn:5001/sharing/GmA3upFOi
请教一下供电的问题,能加下我QQ吗?862471496
可以当个迪斯科球或闹钟诶