ESP32控制WS2812全彩灯珠

lcysts
12
2025-07-24

WS2812B全彩灯珠介绍

本介绍

WS2812B是一个集控制电路与发光电路于一体的智能外控LED光源,只需要一根信号线就能控制灯的多种颜色的变化,多个灯可以级联,在30hz的刷新频率下一个信号线能够控制至多500个LED。

电气参数如下:

引脚识别

如上图所示,WS2812B灯珠一共有四个引脚,将灯珠如下图一样摆放(围脖上有缺口的一边放在左边),四个引脚的识别如下图所示。

  • VDD为供电引脚,供电电压为3.5V-5.3V,一般取典型值5V,由于ESP32引脚最多只能输出3V3,所以该灯珠需要电池独立供电;

  • GND为共地引脚,接ESP32任意GND引脚即可;

  • DOUT为控制信号输出引脚,单个灯珠单独使用时用不到;

  • DIN为控制信号输入引脚,接ESP32上支持输出模式的的GPIO引脚即可,比如IO15

如果是多个灯珠级联使用,则需要将前一个灯珠的DOUT引脚连到后一个灯珠的DIN引脚,实现信号级联传递。

WS2812其他形态

1. 灯带

2. 灯环

ESP32控制WS2812B灯珠

要让ESP32控制WS2812B灯珠,需要引入一下Arduino库

fastled/FastLED

添加第三方库的方法很简单,如果能在platformIO library中搜索到,则直接添加进项目即可

点进去,点击Add to project

添加成功后,platformio.ini文件中会添加新的依赖项(下面文件第5行)

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
lib_deps = fastled/FastLED@^3.6.0

如果要添加的第三方库在platformIO中无法搜索到,你手上有库的源码,则直接将整个库文件夹拷贝到项目的lib文件夹中即可

代码如下

#include <Arduino.h>
#include <FastLED.h>

#define NUM_LEDS 1
#define DATA_PIN 23

CRGB leds[NUM_LEDS];

void setup() {
    FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
}

void loop() {
    leds[0] = CRGB(255, 0, 0);  // 显示红色
    FastLED.show();
    delay(1000);

    leds[0] = CRGB(0, 255, 0);  // 显示绿色
    FastLED.show();
    delay(1000);

    leds[0] = CRGB(0, 0, 255);  // 显示蓝色
    FastLED.show();
    delay(1000);
}

动物装饰