学物联网,来万物简单IoT物联网!!
ws2812是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,还包含有高精度的内部振荡器和12V高压可编程定电流控制部分,有效保证了像素点光的颜色高度一致。
引脚定义
relayObj = WS2812(gpioObj, ledPixel)
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
gpioObj | GPIO | 是 | WS2812控制引脚的GPIO对象 |
ledPixel | int | 否 | 默认ledPixel为24个RGB点灯,开发者根据自己的实际需求创建 |
若WS2812对象创建成功,返回WS2812对象;否则抛出Exception
from machine import Pin
import ws2812
gpioObj=Pin(2, Pin.OUT, Pin.PULLDOWN)
ws2812Obj = ws2812.WS2812(gpioObj)
print("ws2812 inited!")
ws2812 inited!
点亮对应index的RGB点阵灯环
WS2812.set(r,g,b,index)
参数 | 类型 | 说明 |
---|---|---|
r | int | 红色灯珠的值,取值范围:0-255 |
g | int | 绿色灯珠的值,取值范围:0-255 |
b | int | 蓝色灯珠的值,取值范围:0-255 |
index | int | 对应的灯珠索引号,范围:0~(ledPixel-1),例如:第一个灯珠的index为0 |
无
将RGB点阵灯环逐个点亮,每次只有一个灯珠被点亮
WS2812.dot(r,g,b,time)
参数 | 类型 | 说明 |
---|---|---|
r | int | 红色灯珠的值,取值范围:0-255 |
g | int | 绿色灯珠的值,取值范围:0-255 |
b | int | 蓝色灯珠的值,取值范围:0-255 |
time | int | 逐个点灯的时间,单位(ms) |
无
将RGB点阵灯环一一点亮
WS2812.wipe(r,g,b,time)
参数 | 类型 | 说明 |
---|---|---|
r | int | 红色灯珠的值,取值范围:0-255 |
g | int | 绿色灯珠的值,取值范围:0-255 |
b | int | 蓝色灯珠的值,取值范围:0-255 |
time | int | 逐次点灯的时间,单位(ms) |
无
RGB点阵灯环实现彩虹变换
WS2812.rainbow(time)
参数 | 类型 | 说明 |
---|---|---|
time | int | 彩虹渐变的时间,单位(ms) |
无
熄灭对应index的RGB点阵灯环
WS2812.clear(index)
参数 | 类型 | 是否必选 | 说明 |
---|---|---|---|
index | int | 否 | 当不选参数的时候,所有的灯珠会熄灭。 index对应的灯珠索引号,范围:0~(ledPixel-1),例如:第一个灯珠的index为0 |
无
from machine import Pin
import ws2812
gpioObj=Pin(2, Pin.OUT, Pin.PULLDOWN)
ws2812Obj = ws2812.WS2812(gpioObj)
print("ws2812 inited!")
while True:
ws2812Obj.dot(128,0,0,100)
数据协议采用单线归零码的通讯方式,像素点在上电复位以后,DIN端接受从控制器传输过来的数据,首先送过来的24bit数据被第一个像素点提取后,送到像素点内部的数据锁存器,剩余的数据经过内部整形处理电路整形放大后通过DO端口开始转发输出给下一个级联的像素点,每经过一个像素点的传输,信号减少24bit。像素点采用自动整形转发技术,使得该像素点的级联个数不受信号传送的限制,仅仅受限信号传输速度影响。
ws2812时序波形图:
[1] WS2812原理介绍
[2] WS2812购买链接