本帖最后由 jinglixixi 于 2021-9-6 17:44 编辑
在FireBeetle-ESP32-E的开发板上,配有一个RGB灯珠,且该灯珠只有一个控制引脚,那该灯珠是哪种器件呢? 后经测试,证明该灯珠是基于WS2812的显示器件。由图1的原理图可知,其控制引脚为IO5。
图1 WS2812连接关系 对于这个器件我们该如何来使用它呢? 为了在ArduinoIDE的环境下来编写程序,需添加第三方的FastLED库,其添加与使用方法为: 1) 选取“项目”菜单下“加载库”的“管理库”选项,在库管理器的搜索栏,输入“FastLED”; 2) 在出现搜索结果后,点击“安装”按钮; 3) 在完成安装后,即可见到“INSTALLED”的提示,然后点击“关闭”以返回原界面;
图2 添加FastLED库 在添加了FastLED库之后,即可编写相应的程序,其操作步骤为: 1)选取“文件”菜单下的“新建”选项,生成一个新文件; 2)在“项目”菜单的“加载库”下可见到“FastLED”选项,点击后即可在新建的文件中添加上FastLED的头文件; 3)录入相关的程序;
图3 程序编译与上传 4)编译并上传程序,则运行效果如图4所示,即显示器件依红绿蓝的次序循环显示。
图4运行效果 有了前面的使用经验,我们还可以选用图5所示的WS2812灯带来制作更加丰富的显示效果。
图5 WS2812灯带 1. WS2812灯带 为了便于连接外挂的WS2812灯带,可将灯带的输入引脚DI连接到开发板的SCL引脚。 为点亮该灯带,其程序如图6所示。
图6 灯带程序 经程序的编译上传,其运行效果如图7所示。
图7 点亮灯带 2. 定位显示 由于该灯带有7个灯珠,故在使用时需进行如下的定义: #defineNUM_LEDS 7 对于7个灯珠,若想进行定位显示该如何控制呢? 以点亮第6个灯珠为例,所用的语句如下: leds[5] =MAGENTA; FastLED.show();
图8定位显示 3. 色彩控制 在前面的介绍中,我们已能让灯珠显示红绿蓝3种色彩,那如何才能实现图9所示的效果呢?
图9显示效果 我们只需对色彩值进行叠加即可,以显示黄色为例,所用的语句为: leds[2] = CRGB::Red +CRGB::Green; FastLED.show(); 4. 流水灯与色彩变换 若使用循环处理来依次点亮各灯珠,则会产生流水灯式的点亮效果。此外,若在流水灯的效果中加入色彩变换效果,则显示效果更丰富,其程序如图10所示。
图10流水灯式色彩变换 5. 呼吸灯 除了用色彩叠加的方法可产生丰富的色彩外,我们还可通过色彩值的变化来产生呼吸灯的效果,其程序如图11所示。
图11 呼吸灯程序
图12 呼吸灯效果
有了前面的基础,通过组合我们会制作出更多的显示效果。
演示动画:
|