单片机/MCU论坛
直播中

jinglixixi

8年用户 1550经验值
擅长:嵌入式技术 光电显示 接口/总线/驱动 控制/MCU
私信 关注
[文章]

【BPI-Pico-RP2040 开发板】+WS2812彩灯效果制作

在BPI-Pico-RP2040开发板上,配有一个基于WS2812的显示器件,它只有一个引脚,由GPIO3来控制,见图1所示。
image.png

图1 WS2812电路

WS2812的工作时序比较特殊,它是通过高低电平的时间差异来标识数据的,其输入码的时序波形见图2 所示。
image.png

图2 时序波形

具体的传输时间见表1所示,由此可见它对时间的要求还是比较高的。

表1 数据传输时间
image.png

在数据传输过程中,它是按照图3的时序来进行。
image.png

图3 数据传输顺序

此外,WS2812允许进行级联来使用,其连接方式见图4所示,具体的线路连接见图5所示。
image.png

图4 连接方式
image.png

图5 线路连接

在Arduino IDE的环境下,需添加相应的库NeoPixel来支持该器件的使用。

实现板载 WS2812控制的程序如下:

#include
<NeoPixelConnect.h>



#define
MAXIMUM_NUM_NEOPIXELS 1



NeoPixelConnect
p(3, MAXIMUM_NUM_NEOPIXELS, pio0, 0);



void setup(){



    delay(2000);



}



void loop(){



    p.neoPixelFill(255, 0, 0, true);



    delay(1000);



    p.neoPixelClear(true);[]()



    delay(1000);



    p.neoPixelFill(0, 255, 0, true);



    delay(1000);



    p.neoPixelClear(true);



    delay(1000);



    p.neoPixelFill(0, 0, 255, true);



    delay(1000);



    p.neoPixelClear(true);



    delay(1000);



}

经程序下载,其显示效果如图6至图8所示。
image.png

图6点亮红色LED
image.png

图7 点亮绿色LED

image.png

图8 点亮蓝色LED

若修改语句“#define MAXIMUM_NUM_NEOPIXELS 1”
的定义值,则可点亮更多的灯位。

当定义语句为“#define MAXIMUM_NUM_NEOPIXELS 7”时,使用7个灯珠的WS2812灯带,则其显示效果如图9至图11所示。
image.png

图9点亮绿色LED
image.png

图10 点亮蓝色灯带
image.png

图11 点亮红色灯带

除了显示3基色红绿蓝,还可以色彩叠加的方式来显示出更丰富的色彩。当然通过亮度的调节,也可产生呼吸灯的效果。

当换上60个灯珠的WS2812灯带时,经灯珠个数的修改,其效果如图12和图13所示,其效果还是非常漂亮的!
image.png

图12 点亮黄色灯带

image.png

图13点亮蓝色灯带

演示视频:

VID_20230320_160448

更多回帖

发帖
×
20
完善资料,
赚取积分