想给桌面、房间或小车来一圈人人看了都想拍的动态氛围灯,WS2812B几乎是首选。它把控制芯片直接做进每颗灯珠里,一根数据线就能把整条带上每颗灯的颜色、亮度独立控制,业内常叫它NeoPixel。这篇把引脚接线、供电、寻址一次讲透。
WS2812B怎么接线到Arduino
WS2812B灯带其实是三根线:电源5V、地GND、数据DIN。接Arduino只占一个数据脚——把DIN接到数字脚(比如D6),再连上5V和GND就行,用到的库是Adafruit_NeoPixel。注意灯带上标着箭头或DIN的那一头才是输入,接反了灯根本不亮。

这张图把最要紧的几点画清楚了:信号线在数据脚和灯带DIN之间串一个330到470欧的电阻,用来抑制尖峰保护首个灯珠;5V和GND之间再并一个100到1000微法的电容,作为亮度突变时的缓冲。这两步虽然小,却能救下差点被烧的第一颗灯。
供电是WS2812B最容易出事的一环
每颗WS2812B全亮纯白时能吃到60毫安左右,30颗就要接近2安,60颗更是奔着3.6安去。Arduino板载5V只够输出500毫安,硬接几十颗灯一定会把板子拉垮。正确做法是让整条灯带用独立5V电源供电,把电源的GND和Arduino的GND共地,Arduino只负责送数据信号。

灯带三针引脚定义就这么简单——DATA进、5V、GND。灯珠多、灯带长时还会出现末端发红的现象,那是压降在作怪,解决办法是每隔一两米补一次电源,或用粗一点的电源线,头尾都能供电最保险。
用NeoPixel库点亮和寻址
代码思路很直接:初始化一个NeoPixel对象,传入灯珠数量和引脚;loop里用setPixelColor(i, r, g, b)设置第i颗颜色,最后show()一次性刷新。想做流水、彩虹、呼吸这些动态效果,都是在循环里逐帧改颜色再刷新。因为每颗灯是独立寻址,随手就能写出跑马灯、音乐律动这类花活,这也是WS2812B最迷人的地方。
第一次点亮建议先用10到15颗短灯带、亮度调到25%左右验证接线和代码,确认供电稳定再加长,省得一上电就烧灯。







用短灯带验证好接线再往长了加,这个经验帮我省了两条灯带的钱
第一次一定要串个电阻,我图省事没串,烧了第一颗灯才老实
供电真的重点,先算好颗数×60毫安再配电源,别指望板载5V硬扛
DIN那头标着箭头别接反,第一次反了一整条不亮,以为是坏了差点退货