灯厂们背后的MCU,看LPC如何花式点灯(之五)
前期索引:
之四:SCT点灯 终于来到了最后一篇,这一篇我们总结下这种外设点灯的优点。之后我们会用Arduino上知名的插件NeoPixel-KnightRider移植到MCU,实现花式点灯。
几种方法比较
我个人是比较倾向用EZH的实现WS2812这种串行协议的,一来用库简单,MCU开销很小。所以接下来移植NeoPixel-KnightRider这个库我们会以EZH的方式进行。
移植NeoPixel-KnightRider
NeoPixel-KnightRider是结合Arduino开发板和AdaFruit NeoPixel灯条设计的一个流水灯的代码库,可以实现呼吸灯等显示效果。
NeoPixel-KnightRider配合Arduino
其代码比较简单,其核心API就这几个
-knightRider() 呼吸流水灯的灯效
-clearStrip() 熄灭灯带所有的灯
-dimColor()设定灯的亮度
-colorWheel()普通流水灯的灯效
根据NeoPixel-KnightRider的API我们按照SDK的API风格改成了:
-WS2812Strip_KnightRider()
-WS2812_StripClear()
-WS2812_ColorDim()
-WS2812_ColorWheel()
增加了WS2812_StripInit() API用于初始化
增加了独立的WS2812_StripShow() API用于把颜色数据发送个WS2812
实际应用中,我们一般调用
WS2812_StripInit()完成初始化
WS2812Strip_KnightRider() 跑马灯
具体可以参看如下代码,比较简单
这里我们搭了个实际的demo,用的是P0_26引脚(LPC55S69-EVK的P17的D11脚)接的WS2812的Data In数据线,5V和GND直接从LPC55S69-EVK的P16的+5V和GND引出的。
江湖规矩,上图。
图中,红线是+5V,黑线是GND,棕线是数据线。
LPC55S69-EVK连接WS2812灯带
连接好后,别忘了根据灯带上WS2812的个数调整WS2812_PIXELS的值。这里我们设定为80。
OK,让我们看看最终的效果吧。
视频稍等 有朋友问,在哪里可以获得源码,作者已经把源码放在了恩智浦MCU社区,可以到那里下载:
LPC驱动WS2812 LED灯带的几种姿势
|