wifi IoT 智能家居套件 如何实现与Adafruit NeoPixel的WS2812结合,使用PWM模块实现单线控制协议,控制多个RGB灯? - HarmonyOS技术社区 - 电子技术william hill官网 - 广受欢迎的专业电子william hill官网 - 威廉希尔官方网站
分享 收藏 返回

[问答]

wifi IoT 智能家居套件 如何实现与Adafruit NeoPixel的WS2812结合,使用PWM模块实现单线控制协议,控制多个RGB灯?

wifi IoT 智能家居套件 如何实现与Adafruit NeoPixel的WS2812结合,使用PWM模块,单线控制协议,控制多个彩灯?在Arduion上有相应的库文件,使用起来非常方便,没有找到使用于HI3861的库文件,有没有老师可以改写一下,或者把重点说一下?HI3861控制多个RGB彩色LED灯,接口不够用啊,有没有更好的办法?谢谢!

回帖(3)

风轻云淡2021

2021-10-16 10:46:34
参考STM32的驱动WS2812灯珠的方式有两种:DMA+PWM和DMA+SPI

海思Hi3861有PWM和SPI接口,有没有DMA库?如何实现这两种方式?

风轻云淡2021

2021-10-17 11:35:50
请高手帮忙把STM32或者ESP8266上的WS2812驱动程序移植过Hi3861上面,谢谢!

李鸿洋

2023-5-12 17:56:59

要实现WiFi IoT智能家居套件与Adafruit NeoPixel的WS2812结合控制RGB灯,可以考虑采用ESP8266芯片自带的PWM模块控制单线控制协议,控制多个RGB灯。以下是一种实现方法:

1. 将Adafruit NeoPixel的WS2812灯带接在ESP8266芯片的GPIO引脚上。
2. 通过 ESP8266 的PWM模块产生控制WS2812的单线控制协议。
3. 使用 C/C++ 或者 MicroPython 等开发语言编写程序,实现WiFi IoT智能家居套件与Adafruit NeoPixel的WS2812的控制逻辑。

具体实现步骤如下:

1. 在ESP8266芯片的GPIO引脚上设置PWM输出模式,将PWM输出模式调整为高电平占空比为50%。

2. 设置数据帧格式,对于WS2812灯带需要发送24位数据帧来控制RGB颜色。数据帧需要保持一定时间间隔,这个时间间隔称为重复时间间隔(Treset)。在这里,我们将重复时间间隔设置为50us。

3. 在程序中,先发送帧头,然后发送3个字节的颜色数据,最后发送数据帧结束符。需要注意的是,ESP8266需要按设计规范发送严格的电平时间,需要使用C/C++中的inline assembly实现,或使用MicroPython的GPIO模块的高级接口直接输出控制信号。这一步需要使用时序驱动,即循环一定次数控制时间,维持WS2812和ESP8266之间的通讯。

4. 通过定义一个函数,实现多个RGB灯的控制。在函数中,根据需要控制的颜色和灯的编号,生成一个24位数据帧,并依次控制每个灯。

总的来说,使用ESP8266芯片自带的PWM模块控制单线控制协议,控制多个RGB灯需要注意时序控制,并且需要设置相应的数据帧格式。这里仅提供一种参考实现方式,具体实现还需要根据实际情况进行调整。

更多回帖

×
发帖