27948| 0
|
[ESP8266/ESP32] 【Beetle ESP32-C3试用】使用Arduino编程控制WS2812B炫彩LED |
在网上有很多关于WS2812B的资料,介绍了各种控制WS2812B的方法。 而在DFRobot Beetle ESP32-C3的Arduino编程中,得益于Arduino IDE强大的扩展功能,我们可以用第三方的扩展库,来很方便的控制WS2812B。 在这个分享中,使用的是Adafruit_NeoPixel,关于其详细资料,可以查看官方页面:Adafruit NeoPixel Library WS2812B炫彩LED可以很灵活的组成各种实际所需要的形状,如条带状、环形、点阵,单颗也可以使用。 我这次所使用的,是一块8*8点阵的WS2812B炫彩LED点阵板: 背面结构如下: WS2812B炫彩LED很神奇,不管是1颗LED的控制,还是上千颗LED的控制,都只需要1根数据线即可,也就是上面板子背面的DIN。 多块这样的单体,还能够连接起来,前者的DOUT,连接到后者的DIN。实际上,相邻的两颗之间,也是这么连接的。 这款8*8的点阵板,每一颗灯珠都是可以单独控制的,所以有先后顺序,按照下面的顺序进行控制。 通过1根线,发送控制数据给WS2812B,需要较高的数据发送速度,所以通常使用SPI接口发送。 查看DFRobot Beetle ESP32-C3的官方资料,了解引脚的具体定义情况: 通过上图,可以了解到,D6可复用为SPI的MOSI,用于发送数据,因此,可以将该引脚与WS2812B点阵板的DIN连接。 另外,WS2812B的工作电压为5V,而每个红色、绿色和蓝色LED需要大约20mA,或者在全亮度下每个LED总共60mA,如果8*8共64颗灯珠都点到最亮,那将需要60*64=3840A的电流,这样严重超过DFRobot Beetle ESP32-C3的输出电流,产生不可预料的结果。因为 DFRobot Beetle ESP32-C3 的最大输出电流为500 mA。 所以,使用WS2812B的时候,如果是单颗的,使用开发板自身供电,没有问题。如果使用多颗,则一定要使用专门的外接电源。 在我的这个实例中,我使用了一个USB2TTL的电源引脚,来为WS2812B点阵供电。 最终,具体的连线如下: 做好以上连线后,就可以使用Arduino IDE进行编程了。 在具体编程之前,需要现在Arduino IDE中安装Adafruit NeoPixel。 在Arduino IDE的库管理界面中,搜索Adafruit NeoPixel并安装如图所示的扩展库即可: 在了解了 Adafruit NeoPixel 的具体使用后,编写如下的程序: 代码文件: ![]() |
© 2013-2023 Comsenz Inc. Powered by Discuz! X3.4 Licensed