每次在街上看到机器人眼睛会亮、会变色、还会流动,总想自己也做一个。其实给机器人做一双会发光的眼睛,用到的东西并不复杂,核心就是一条WS2812B全彩灯带外加一根数据线。这篇文章就把怎么接线、怎么编程讲清楚,下班就能上手。
WS2812B和普通灯带不一样的地方,是每一颗灯珠里都内置了一颗驱动芯片。也就是说,灯带不用专门的控制板去分配每颗灯的颜色,主控只要通过一根数据线按顺序把颜色数据“刷”进去,就能让每一颗灯珠分别亮出想要的颜色,还能做成渐变、呼吸、跑马灯这些效果。

接线只需一根数据线
WS2812B的接口一般引出三根线:电源、地和一根数据线。电源和地给灯珠供电,数据线接到主控的某个GPIO引脚。因为数据是单向流入灯带的,所以接法讲究顺序:主控的数据线接到灯带第一颗灯珠的输入端,然后从这一颗的输出端再往下串下一颗,一条链子串到底。
这里提醒一句:千万别用主控的5V脚直接去扛一整条灯带给机器人做全彩效果时的电流。WS2812B全亮时每颗灯珠峰值电流不小,几十颗加起来就能到好几安。我给这类跑马灯供电时都习惯从外部电源单独给灯带供电,只让地线跟主控共用,颜色刷得又稳又亮。
程序上用FastLED很省心
写代码的时候我用的FastLED库,只要告诉它数据接在哪个引脚、一共有多少颗灯,再用一个数组去控制每颗灯的RGB值就行。想让眼睛亮成蓝色呼吸,就在循环里慢慢抬升再回落亮度;想让颜色轮换,直接玩转HSV色相值,一颗颗填进数组里再Show出来,颜色就会一圈圈地转。
给机器人做眼睛,我一般用环形灯板的WS2812B做成两只亮眼。先给两只眼睛各分配一段灯,然后写函数让它们同步完成眨眼和变色,看起来就像一双真的有情绪的眼睛。跑马灯效果也一样,把那颗高亮灯的位置不断往前挪,就出来一条光在灯带上跑的感觉。

避坑,这几条最重要
第一个坑是数据线接线顺序。灯带输入端搞错,颜色就全乱甚至不亮,接线前先看引脚上的箭头标注方向,从In流入、Out流出。
第二个坑是供电。颜色随机跳动、亮度不足、画面闪烁,八成是电源带不动,查一下是不是灯带电流超过了电源上限。
第三个坑是数据线太长会衰减。如果灯带和主控之间拉线比较长,信号会变差导致后面的灯乱闪,主线太长的时候在靠近主控那段补一个增强,或者把线缩短。
WS2812B的可玩性很高,从一双会眨的机器人眼睛到整面流光溢彩的酷炫灯墙都能做。花几十块钱买条灯带,配上FastLED几行代码,你的第一个会发光的作品很快就能亮起来。




给机器人做会眨的眼睛这个点子不错,周末就试一把,收藏了
供电那段说到点子上了,灯一多电流真的顶不住,我上次就是没单独供电直接花屏
原来直接上FastLED库就行,我之前还在自己造轮子调颜色,白折腾了