在上述代码中,包含了如下三个部分的内容:-
串口调试信息输出:使用较为简单,不详细说明,可以自己查看Arduino资料了解
-
控制板载LED:端口为D10,根据idx奇偶点亮或者熄灭
-
Adafruit NeoPixel 控制WS2812B
Adafruit NeoPixel 部分的重点如下:1. 初始化控制实例:
-
Adafruit_NeoPixel pixels(NUMPIXELS, PIN_NEOPIXEL, NEO_GRB + NEO_KHZ800)
复制代码
传入的参数为LED灯珠数,控制引脚,以及信息传输的频率(不用修改)。8*8的点阵,灯珠数为64各。根据前面了解DFRobot Beetle ESP32-C3的资料和连线,控制引脚为D62. 开始控制:
3. 设置亮度:
-
pixels.setBrightness(20);
复制代码
最大值为255,也就是0xff,表示最亮。
4. 设置全部灯珠的颜色:
直接使用6位16进制数,每两位控制一个颜色,分别为RGB。
当使用0x000000时,表示没有颜色,也就是熄灭;
当使用0xFF0000是,表示红色R最亮。
此处的fill,表示控制所有的灯珠,而不是控制单个。
5. 清除当前灯珠颜色设置:
6. 设置单颗灯珠的颜色:
-
pixels.setPixelColor(idx, pixels.Color(0, 0, 0));
复制代码
idx表示第几颗灯珠,从0开始;因为是8*8的点阵,所以最大值为63
而pixels.Color,分别则设置RGB三种颜色,最大为255,也就是0xff。
7. 让灯珠真正显示生效:
代码的整体逻辑结构,也相对比较简单,就是每次循环,先熄灭上一颗灯珠,然后点亮当前指向的灯珠,颜色使用了一定的随机。
显示完成后,指向下一颗灯珠;如果达到了最大值,则从0重新开始。
下载完成后,打开串口,也可以看到输出的调试信息:
具体的呈现效果,如视频所示。
如果你还会一些数学函数的话,那么可以用数学函数,生成心形图案的坐标,对照到8*8点阵上,那么就能在情人节,给你最心爱的Ta,表达心意了。当然,如果不会没关系,可以提前用纸对着8*8点阵,描绘心形图案,记录下对应的LED灯珠的位置,在点亮对应的灯珠也是可以的。