我通过这个非常有用的实现 FunWithLEDS 进入了NeoPixels ,
该库可以轻松移植到其他 MCU
但是我想用于 LED 灯条 PSoC 4000、4000 的两个 IC 与该库不兼容。
所以我必须阅读大量内容才能找到一个轻量级的替代方案,而且我对理解协议很感兴趣。WS2812
所以我看到了这篇文章,它对通信协议进行了非常深入的解释,并且对 Arduino 有一个易于遵循的实现,它只需要移植到 PSoC 并对其进行调整。
这个协议最简单的解释是我们基本上有三个不同的信号从控制器传送到 Strip。
在这种方法中,我指望 MCU 转换引脚输出值所需的时间。
if (bitVal)
{ // 0 bit
CY_SYS_PINS_SET_PIN(NeoPixel_pixl__DR, NeoPixel_pixl_SHIFT);
CyDelayCycles(2);
CY_SYS_PINS_CLEAR_PIN(NeoPixel_pixl__DR, NeoPixel_pixl_SHIFT);
CyDelayCycles(1);
}
else
{ // 1 bit
CY_SYS_PINS_SET_PIN(NeoPixel_pixl__DR, NeoPixel_pixl_SHIFT);
CY_SYS_PINS_CLEAR_PIN(NeoPixel_pixl__DR, NeoPixel_pixl_SHIFT);
CyDelayCycles(1);
}
程序必须为每个 LED 的每种颜色发送 8 位,然后连续发送复位信号。
该块有四个功能(非常不言自明的)
Send Bit(bool)
Send Byte(uint8_t)
Send Pixel(uint8_t r, uint8_t g, uint8_t b)
Show (RESET)
然后在主程序上,我有一些基于Josh.com代码的示例,
但我已经调整了删除所有阻塞位的代码,使它们对完整的应用程序更有用。
演示功能允许尝试以下功能。
纯色
彩虹色渐变
运行 LEDS(剧院追逐)
起爆。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !