• 物联网AI MicroPython传感器学习 之 WS2812 RGB点阵灯环


    学物联网,来万物简单IoT物联网!!在这里插入图片描述

    一、产品简介

    ws2812是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,还包含有高精度的内部振荡器和12V高压可编程定电流控制部分,有效保证了像素点光的颜色高度一致。
    image.png
    引脚定义

    • DI: 控制信号输入引脚
    • VCC:电源5V
    • GND:电源地
    • DO: 信号输出引脚,串联下一个灯珠

    二、技术参数

    • 工作电压:5V
    • 发送速率:800Kbps
    • 亮度显示:支持256级亮度显示,rgb三色支持16777216种颜色的显示
    • 通信方式:单线通信
    • 工作特性:刷新速率30帧/秒时,级联数不小于1024
    • 工作温度:-20°C~85°C

    三、软件接口

    WS2812 - 创建WS2812驱动对象

    • 函数原型

    relayObj = WS2812(gpioObj, ledPixel)

    • 参数说明
    参数类型必选参数?说明
    gpioObjGPIOWS2812控制引脚的GPIO对象
    ledPixelint默认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!")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 输出
    ws2812 inited!
    
    • 1

    set(r,g,b,index) - 点亮对应index的RGB点阵灯环

    • 函数功能:

    点亮对应index的RGB点阵灯环

    • 函数原型:

    WS2812.set(r,g,b,index)

    • 参数说明:
    参数类型说明
    rint红色灯珠的值,取值范围:0-255
    gint绿色灯珠的值,取值范围:0-255
    bint蓝色灯珠的值,取值范围:0-255
    indexint对应的灯珠索引号,范围:0~(ledPixel-1),例如:第一个灯珠的index为0
    • 返回值:

    dot(r,g,b,time) - 将RGB点阵灯环逐个点亮,每次只有一个灯珠被点亮

    • 函数功能:

    将RGB点阵灯环逐个点亮,每次只有一个灯珠被点亮

    • 函数原型:

    WS2812.dot(r,g,b,time)

    • 参数说明:
    参数类型说明
    rint红色灯珠的值,取值范围:0-255
    gint绿色灯珠的值,取值范围:0-255
    bint蓝色灯珠的值,取值范围:0-255
    timeint逐个点灯的时间,单位(ms)
    • 返回值:

    wipe(r,g,b,time) - 将RGB点阵灯环一一点亮

    • 函数功能:

    将RGB点阵灯环一一点亮

    • 函数原型:

    WS2812.wipe(r,g,b,time)

    • 参数说明:
    参数类型说明
    rint红色灯珠的值,取值范围:0-255
    gint绿色灯珠的值,取值范围:0-255
    bint蓝色灯珠的值,取值范围:0-255
    timeint逐次点灯的时间,单位(ms)
    • 返回值:

    rainbow(time) - RGB点阵灯环实现彩虹变换

    • 函数功能:

    RGB点阵灯环实现彩虹变换

    • 函数原型:

    WS2812.rainbow(time)

    • 参数说明:
    参数类型说明
    timeint彩虹渐变的时间,单位(ms)
    • 返回值:

    clear(index) - 熄灭对应index的RGB点阵灯环

    • 函数功能:

    熄灭对应index的RGB点阵灯环

    • 函数原型:

    WS2812.clear(index)

    • 参数说明:
    参数类型是否必选说明
    indexint当不选参数的时候,所有的灯珠会熄灭。
    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    五、工作原理

    数据协议采用单线归零码的通讯方式,像素点在上电复位以后,DIN端接受从控制器传输过来的数据,首先送过来的24bit数据被第一个像素点提取后,送到像素点内部的数据锁存器,剩余的数据经过内部整形处理电路整形放大后通过DO端口开始转发输出给下一个级联的像素点,每经过一个像素点的传输,信号减少24bit。像素点采用自动整形转发技术,使得该像素点的级联个数不受信号传送的限制,仅仅受限信号传输速度影响。
    image.png
    ws2812时序波形图:
    image.png

    参考文献及购买链接

    [1] WS2812原理介绍
    [2] WS2812购买链接

  • 相关阅读:
    全国电费接口文档分享
    前端八股文-类型判断typeof,instanceof,类式,构造函数,组合,原型式,寄生式继承,手写new、bind、call、apply
    【Gradle自动化构建编程框架】一、介绍
    红队打靶:Fowsniff打靶思路详解(vulnhub)
    mac openssl 版本到底怎么回事 已解决
    炫酷转换:Java实现Excel转换为图片的方法
    5G小数据传输增强技术
    汇率兑换查询易语言代码
    计算机思维基础
    BIM、建筑机器人、隧道工程施工关键技术
  • 原文地址:https://blog.csdn.net/weixin_39363464/article/details/133676532