字符串压缩以更快地刷新 WS2811 RGB LED
String compression to refresh WS2811 RGB LEDs faster
我有以下问题。我在我的项目中使用 WS2811 二极管、Arduino Due 和 node.js。我想从连接到 node.js 服务器的设备流式传输视频并将其显示在二极管阵列上。现在我可以使用浏览器和摄像头从任何设备捕获视频,将视频的分辨率更改为我想要的分辨率 (15x10) 并创建包含所有二极管的所有颜色(R、G、B)信息的字符串链。我通过波特率 115200 的串行端口将它从 node.js 服务器发送到 arduino。不幸的是发送过程太慢了。我希望它每秒至少刷新 LED 阵列 10 次。所以我想知道是否可以压缩我发送给 arduino 的这个字符串,当它到达那里时解压它,并为二极管设置颜色。也许你们有一些类似项目的经验并建议我该怎么做。
为了处理二极管,我正在使用 adafruit_neopixel 库。
如果我是你,我会尝试在你的服务器上将视频转换为 16 位编码(如 RGB565),甚至可能是 8 位。
即使在这么低的分辨率下,我也不确定 atmega328p 是否足够强大,可以将其转换回 24 位并将数据发送到显示器,但 TIAS。如果它不起作用,您可能需要考虑切换到 BeagleBone 或 RPi。
如果您有大面积的相似颜色,特别是如果您按照上一个答案中的建议将位深度降低到 16 或 8 位,运行 长度编码压缩可能值得一试。
只需几行代码即可轻松实现:
https://en.wikipedia.org/wiki/Run-length_encoding
我有以下问题。我在我的项目中使用 WS2811 二极管、Arduino Due 和 node.js。我想从连接到 node.js 服务器的设备流式传输视频并将其显示在二极管阵列上。现在我可以使用浏览器和摄像头从任何设备捕获视频,将视频的分辨率更改为我想要的分辨率 (15x10) 并创建包含所有二极管的所有颜色(R、G、B)信息的字符串链。我通过波特率 115200 的串行端口将它从 node.js 服务器发送到 arduino。不幸的是发送过程太慢了。我希望它每秒至少刷新 LED 阵列 10 次。所以我想知道是否可以压缩我发送给 arduino 的这个字符串,当它到达那里时解压它,并为二极管设置颜色。也许你们有一些类似项目的经验并建议我该怎么做。
为了处理二极管,我正在使用 adafruit_neopixel 库。
如果我是你,我会尝试在你的服务器上将视频转换为 16 位编码(如 RGB565),甚至可能是 8 位。
即使在这么低的分辨率下,我也不确定 atmega328p 是否足够强大,可以将其转换回 24 位并将数据发送到显示器,但 TIAS。如果它不起作用,您可能需要考虑切换到 BeagleBone 或 RPi。
如果您有大面积的相似颜色,特别是如果您按照上一个答案中的建议将位深度降低到 16 或 8 位,运行 长度编码压缩可能值得一试。
只需几行代码即可轻松实现: https://en.wikipedia.org/wiki/Run-length_encoding