ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

零基础学ESP32:WS2812B灯带——让灯光随心跳动!

零基础学ESP32:WS2812B灯带——让灯光随心跳动! 前面我们学过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刷新率800kHztiming1第三步动手接线接线非常简单3根线搞定灯带线连接ESP32说明红色VCC3.3V或5V电源正极白色GNDGND电源地绿色信号线GPIO15控制信号第四步代码——控制灯带MicroPython内置了neopixel库直接导入即可使用importneopixelfrommachineimportPinimporttimeimporturandom GBIO_INPin(15)# 控制信号输入引脚LED_NUM30# LED灯的数量# 创建控制对象LEDneopixel.NeoPixel(pinGBIO_IN,nLED_NUM,timing1)# 全部点亮红色LED.fill((255,0,0))# GRB填充数据0为不亮255为全亮LED.write()# 写入数据time.sleep(1)whileTrue:# 随机生成一个颜色rurandom.randint(0,255)gurandom.randint(0,255)burandom.randint(0,255)# 从左到右依次点亮foriinrange(30):LED[i](r,g,b)# 设置第i颗灯珠的颜色LED.write()# 写入数据time.sleep_ms(50)# 再随机一个颜色rurandom.randint(0,255)gurandom.randint(0,255)burandom.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秒然后随机颜色的光点从左侧流向右侧每颗灯珠依次点亮接着另一个随机颜色的光点从右侧流回左侧循环往复形成流动的彩色效果进阶玩法做一条彩虹灯带流动效果只是开始灯带还能玩出更多花样。比如做一条彩虹渐变importneopixelfrommachineimportPinimporttime LEDneopixel.NeoPixel(pinPin(15),n30,timing1)defwheel(pos):生成彩虹色pos: 0~255ifpos85:return(pos*3,255-pos*3,0)elifpos170: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*8j)%255)LED.write()time.sleep_ms(20)效果整条灯带呈现出流动的彩虹渐变非常炫酷WS2812B能做什么应用场景用途桌面氛围灯随音乐律动的彩色灯效电脑机箱灯炫酷的RGB灯效智能家居客厅背景墙、床边氛围灯节日装饰圣诞树、派对装饰创意DIY灯光互动装置状态指示用不同颜色表示设备状态灯珠数量怎么改代码中LED_NUM 30表示灯带有30颗灯珠。如果你的灯带不是30颗改成实际数量即可LED_NUM60# 60颗灯珠的灯带 注意灯珠越多耗电越大。30颗灯珠全亮时电流约1.8A如果灯带较长建议外接独立5V电源不要直接从ESP32取电。全程回顾步骤操作效果找到课程文档→课程→ESP32MicroPython→WS2812B灯带了解灯带原理认识硬件3根线VCC、GND、信号线知道怎么接线动手接线红→3.3V, 白→GND, 绿→GPIO15硬件就位打开代码点击“打开”按钮代码进入编辑器保存运行CtrlS → 选择ESP32 → 运行灯带亮起观察效果随机颜色光点来回流动炫酷灯效
返回列表