设置
我有几百个 Sparkfun LED 像素(类似于https://www.sparkfun.com/products/11020)连接到 Arduino Uno,并希望使用内置的 Serial-over-USB 连接从 PC 控制像素的阿杜诺。
像素是可单独寻址的,每个像素都有 24 位颜色 (RGB)。由于我希望能够非常快速地更改每个像素的颜色,因此从 pc 到 Arduino 的数据传输必须非常高效(从 Arduino 到像素的数据进一步传输已经非常快了)。
问题
我试过直接将所需的 RGB 值直接发送到 Arduino,但这会导致明显的延迟,例如,当我想同时打开所有 LED 时。我最小化数据量的直接想法是将可用颜色从 24 位减少到 8 位,这对于我的应用程序来说已经绰绰有余了。
如果我这样做,我必须将 PC 上的 8 位值扩展为 Arduino 上的 24 位值,以设置像素的实际颜色。这里明显的解决方案是一个调色板,它包含所有可用的 8 位值和相应的 24 位颜色。不过,我希望有一个没有调色板的解决方案,主要是出于内存空间的原因。
问题
将 8 位颜色扩展到 24 位颜色的有效方法是什么,最好是准确保留颜色信息的方法?这个任务有标准算法吗?
可能的解决方案
我正在考虑一种格式,每个 R 和 B 2 位,G 3 位。这些值将被打包成一个字节,然后传输到 Arduino,然后使用位移解包并使用 map() 进行插值功能(http://arduino.cc/en/Reference/Map)。
对该解决方案有任何想法吗?有什么更好的方法来做到这一点?