1、要创建一个二维数组,作为显示缓冲区,因为2812没有地址,所以每次显示刷新要将所有灯的数据“全部”传输一次。NX3结构,N代表有多少个2812灯,3代表G R B三种色的值。
2、改定指定灯(像素)R G B值的子程序:
3、将显示缓冲区数据写到WS2812的子程序,先传前面灯的数据,再传后面灯的数据,每个灯先传G数据,再传R数据,最后传B数据,每个数据先传高位,再传低位,形成数据链。在每次(将所有灯数据传输完叫一次)传输前都要先将2812复位,调用下rest(),让数据从“头”传输。否则数据会被沿上次传数点后“续传”,因为上次传输后面实际上是不存在物理灯的,也就是如果不复位,该次传输会没有效果。
4、发送1byte数据子程序,800K:
5、复位子程序,每次调用显示子程序前要将2812复位,否则数据会以为是上次数据一直向“后传”:
6、好了,有了前面的程序,先设置像素点的值,然后再调用显示程序就可以看到2812亮了,感到很神奇吗?