先看下这种灯,这种灯是一种全彩的LED,可以通过数组改变三基色亮度进行调节彩色变化。还有就是这种灯可以级联,写是向下传递的。
操作这个是需要进行编码的,也就是1和0被重新定义了,看上图,0码是需要维持管脚高电平220ns~380ns之间然后低电平580ns~1us之间,1码是 高低电平维持时间一致。
看其demo,里面创建了数组,数组是每八位代表一种颜色。大家从下图的选中区域是否看到了一个爱心和520字样,这里就是利用这个数组进行循环的流动效果。
再来看这张,这张里面需要注意的就是zbff的使用,介绍时c内存数据操作库。可以看下官方文档介绍。
这里面他推荐的是PWM方式,因为其极低的延时,但是目前我开发还是没有弄好,能亮但是显示的效果不对,想换GPIO 的方式,可能是因为其luaos的原因调试确实存在问题,如果像32那种裸机不知道会不会好点。我也追踪了一下源码。下面是我看源码实现GPIO操作认为的一些问题。
这几个就是我们需要用到的,从gitee上下载即可。我们关注下sensor里面的实现。
他操作GPIO是通过一个函数进行电平反转的,然后维持时间就是高的时间。
这里就是delay延时,看里面是ns级别的,但是实际好像比较难控制,然后出来后又是使用的while循环。
所以调试时,感觉怎么给都不对。本次大概看了下OS的源码,没有深入去调试,使用起来确实是看灯的,有些厂家的灯可能就不会亮,想要看效果可以参考下面链接。
https://wiki.luatos.com/appDevelopment/peripheral/ws2812/ws2812.html