这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【换取手持数字示波器】使用neopixel库点亮WS2812B

共8条 1/1 1 跳转至

【换取手持数字示波器】使用neopixel库点亮WS2812B

助工
2024-05-19 23:15:23   被打赏 50 分(兑奖)     打赏

背景

        在上一篇WS2812B认知中,WS2812B采用了github上开源的第三方实现来驱动WS2812B。但在最近看micropython类时,突然发现有这么一段内容:

1.jpg

        从内容的描述看,micropython已经内置了一个用于驱动WS2812的库,这个库的名字叫neopixel。另外,此内容还提供了一格信息,WS2812属于NeoPixel LED,也就是说,很可能市面上有不少灯珠都使用NeoPixel LED协议。

neopixel库使用

库导入

        仅仅需要在python源码中添加以下信息即可

import neopixel

指定驱动管脚

p = machine.Pin.board.X8 #实际上,在树莓派中,管脚的使用为 p = machine.Pin(8)

指定驱动管脚所驱动的ws2812个数


n = neopixel.NeoPixel(p, 32)

# 此为完整的写法,其中:
# bpp可以设置为3或4,3代表RGB888格式,4代表RGBW8888
# timing可以设置为0或1,0代表工作频率为400KHz,1代表工作频率为800KHz
class neopixel.NeoPixel(pin, n, *, bpp=3, timing=1) 8格式

显示颜色设置


n[i] = (255, 0, 0) # i为ws2812编号,(255, 0, 0)为通用的RGB888格式排列,(255, 0, 0)代表的是红色最亮
n.__setitem__(i, (255, 0, 0)) # 也可以使用此种形式的更新方式
n.fill((255, 0, 0)) # 将所有的WS2812都设置为红色最亮

获取当前设置的颜色

n.__getitem__(i)

注意:此时仅仅是更新显示颜色,但并未更新到具体的灯珠上

获取接口上的灯珠个数

n.__len__()

将颜色推送至WS2812

n.write()

编写验证程序

        由于手头上刚好有树莓派RP2040,这个最方便的玩法便是玩micropython,因此便用该板卡编写测试代码验证,验证思路为做一个四灯颜色交替闪烁的呼吸灯,具体测试代码如下:

import machine
import neopixel
import time

neopixel_pin = machine.Pin(23)
np = neopixel.NeoPixel(neopixel_pin, 4)

def breathe(color):
    for i in range(0, 256, 4):
        for j in range(len(np)):
            np.__setitem__(j,(color[0] * i // 256, color[1] * i // 256, color[2] * i // 256))
        np.write()
        time.sleep(0.01)
    for i in range(255, -1, -4):
        for j in range(len(np)):
            np.__setitem__(j,(color[0] * i // 256, color[1] * i // 256, color[2] * i // 256))
        np.write()
        time.sleep(0.01)

while True:
    breathe((255, 0, 0))
    breathe((0, 255, 0))
    breathe((0, 0, 255))

验证结果

        在运行该段代码后,树莓派的板卡上可以看到红灯由暗变亮后由亮变暗,之后绿灯由暗变亮后由亮变暗,最后蓝灯由暗变量后由亮变暗,如此交替循环显示。效果与库函数描述一致。

结论

        在学习知识时,我们可能会直接采用硬刚规格书,并按照理解编写实现。进一步的直接去github上搜索别人写好的库,并根据对规格书的理解验证库是否有效,是否存在明显的bug。但一旦我们深入了解后就会发现,其实不少知识属于行业内知识,在行业内这些功能早已标准化成统一的实现,此时只要按照标准化的调用,便能以很少的代码,且很少有bug的形式实现想要的功能。而这方面知识的积累,需要靠不断深耕特定行业才能清晰认识,知晓并熟练使用。






关键词: neopixel     WS2812B     点亮    

专家
2024-05-20 08:07:12     打赏
2楼

很厉害啊


专家
2024-05-20 08:17:53     打赏
3楼

谢谢分享


高工
2024-05-20 10:57:56     打赏
4楼

谢谢分享


高工
2024-05-20 12:04:09     打赏
5楼

谢谢分享


高工
2024-05-20 19:01:47     打赏
6楼

谢谢分享


院士
2024-05-24 18:46:24     打赏
7楼

开源快乐


专家
2024-05-29 07:56:46     打赏
8楼

谢谢分享


共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]