☰
零基础学ESP32:WS2812B灯带——让灯光随心跳动!
2026/10/3 2:31:18 网站建设 项目流程

前面我们学过RGB彩色灯珠,能调出各种颜色,但一颗灯珠终究只有一颗。今天要玩点更炫的——WS2812B灯带!

一条灯带上集成了几十颗可独立控制的RGB灯珠,每颗灯珠都能显示不同的颜色。流水灯、彩虹渐变、音乐律动、氛围灯效……这些炫酷的效果,都是WS2812B灯带实现的。

今天这节课,我们就用ESP32 + WS2812B灯带,点亮一条会"呼吸"的彩色灯带!

第一步:找到课程,看看成品效果

打开逗脑IDE,点击顶部“文档”,在“课程” → “ESP32 + MicroPython”分类下,找到WS2812B灯带这节课。

打开课件,你会看到本节课的最终效果:灯带先是全部亮起红色,然后每颗灯珠依次被随机颜色点亮,形成流动的彩色效果,来回往复。

第二步:WS2812B是什么?

WS2812B是一种可独立寻址的RGB LED灯珠。简单来说,就是每颗灯珠里面都集成了红、绿、蓝三色LED芯片和控制芯片。

最大特点:

只需要一根信号线,就能控制整条灯带上每一颗灯珠的颜色和亮度!

灯带的3根线:

线色功能说明
红色VCC电源正极(3.3V或5V都行)
白色GND电源地
绿色信号线控制信号(接GPIO15)

📌 小提示:有的灯带会多出两根备用电源线(红色VCC、白色GND),那是为了长灯带供电更稳定用的,短灯带可以不接。

核心参数:

参数说明
灯珠数量本节课使用30颗
颜色每颗灯珠支持RGB三色
控制方式单线信号(GPIO15)
刷新率800kHz(timing=1)

第三步:动手接线

接线非常简单,3根线搞定:

灯带线连接ESP32说明
红色(VCC)3.3V或5V电源正极
白色(GND)GND电源地
绿色(信号线)GPIO15控制信号

第四步:代码——控制灯带

MicroPython内置了neopixel库,直接导入即可使用:

importneopixelfrommachineimportPinimporttimeimporturandom GBIO_IN=Pin(15)# 控制信号输入引脚LED_NUM=30# LED灯的数量# 创建控制对象LED=neopixel.NeoPixel(pin=GBIO_IN,n=LED_NUM,timing=1)# 全部点亮红色LED.fill((255,0,0))# GRB填充数据(0为不亮,255为全亮)LED.write()# 写入数据time.sleep(1)whileTrue:# 随机生成一个颜色r=urandom.randint(0,255)g=urandom.randint(0,255)b=urandom.randint(0,255)# 从左到右依次点亮foriinrange(30):LED[i]=(r,g,b)# 设置第i颗灯珠的颜色LED.write()# 写入数据time.sleep_ms(50)# 再随机一个颜色r=urandom.randint(0,255)g=urandom.randint(0,255)b=urandom.randint(0,255)# 从右到左依次点亮foriinrange(29,-1,-1):LED[i]=(r,g,b)LED.write()time.sleep_ms(50)

代码逻辑:

步骤操作说明
1NeoPixel(pin, n, timing)创建控制对象,指定引脚、灯珠数量、速率
2LED.fill((r,g,b))填充所有灯珠为同一颜色
3LED[i] = (r,g,b)设置第i颗灯珠的颜色
4LED.write()把颜色数据写入灯带,灯珠亮起
5urandom.randint(0,255)生成随机颜色

关键参数:

参数值说明
pinGPIO15信号线连接的引脚
n30灯带上灯珠的数量
timing1800kHz速率(WS2812B标准)

颜色顺序:WS2812B使用的是GRB顺序,但MicroPython的neopixel库已经帮你处理好了,直接写(r, g, b)就行。

第五步:保存运行,看灯带亮起来!

保存代码到开发板,命名 ws2812b.py

点击运行按钮:

  1. 灯带先全部亮起红色,保持1秒
  2. 然后随机颜色的光点从左侧流向右侧,每颗灯珠依次点亮
  3. 接着另一个随机颜色的光点从右侧流回左侧
  4. 循环往复,形成流动的彩色效果

进阶玩法:做一条彩虹灯带

流动效果只是开始,灯带还能玩出更多花样。比如做一条彩虹渐变:

importneopixelfrommachineimportPinimporttime LED=neopixel.NeoPixel(pin=Pin(15),n=30,timing=1)defwheel(pos):"""生成彩虹色(pos: 0~255)"""ifpos<85:return(pos*3,255-pos*3,0)elifpos<170:pos-=85return(255-pos*3,0,pos*3)else:pos-=170return(0,pos*3,255-pos*3)whileTrue:forjinrange(255):foriinrange(30):LED[i]=wheel((i*8+j)%255)LED.write()time.sleep_ms(20)

效果:整条灯带呈现出流动的彩虹渐变,非常炫酷!

WS2812B能做什么?

应用场景用途
桌面氛围灯随音乐律动的彩色灯效
电脑机箱灯炫酷的RGB灯效
智能家居客厅背景墙、床边氛围灯
节日装饰圣诞树、派对装饰
创意DIY灯光互动装置
状态指示用不同颜色表示设备状态

灯珠数量怎么改?

代码中LED_NUM = 30表示灯带有30颗灯珠。如果你的灯带不是30颗,改成实际数量即可:

LED_NUM=60# 60颗灯珠的灯带

📌 注意:灯珠越多,耗电越大。30颗灯珠全亮时电流约1.8A,如果灯带较长,建议外接独立5V电源,不要直接从ESP32取电。

全程回顾

步骤操作效果
找到课程文档→课程→ESP32+MicroPython→WS2812B灯带了解灯带原理
认识硬件3根线:VCC、GND、信号线知道怎么接线
动手接线红→3.3V, 白→GND, 绿→GPIO15硬件就位
打开代码点击“打开”按钮代码进入编辑器
保存运行Ctrl+S → 选择ESP32 → 运行灯带亮起!
观察效果随机颜色光点来回流动炫酷灯效!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询