設定
数百個の Sparkfun LED ピクセル ( https://www.sparkfun.com/products/11020に類似) が Arduino Uno に接続されており、組み込みの Serial-over-USB 接続を使用して PC からピクセルを制御したいArduinoの。
ピクセルは個別にアドレス指定可能で、それぞれが色 (RGB) 用に 24 ビットを持っています。各ピクセルの色を非常に迅速に変更できるようにしたいので、PC から Arduino へのデータの送信は非常に効率的でなければなりません (Arduino からピクセルへのデータのさらなる送信はすでに非常に高速です)。
問題
目的の RGB 値をそのまま Arduino に直接送信しようとしましたが、たとえばすべての LED を同時にオンにしたい場合、目に見える遅延が発生します。データの量を最小限に抑えるための私の簡単なアイデアは、使用可能な色を 24 ビットから 8 ビットに減らすことです。これは、私のアプリケーションには十分すぎるほどです。
これを行う場合、PC の 8 ビット値を Arduino の 24 ビット値に拡張して、ピクセルに実際の色を設定する必要があります。ここでの明らかな解決策は、利用可能なすべての 8 ビット値と対応する 24 ビット色を保持するパレットです。ただし、主にメモリスペースの理由から、パレットのないソリューションが必要です。
質問
8ビットカラーを24ビットカラーに拡張する効率的な方法は何ですか?カラー情報を正確に保持する方法が望ましいですか? このタスクの標準アルゴリズムはありますか?
考えられる解決策
R と B ごとに 2 ビット、G に 3 ビットのフォーマットを検討していました。これらの値は、Arduino に送信される 1 バイトにパックされ、ビットシフトを使用してアンパックされ、map() を使用して補間されます。関数 (http://arduino.cc/en/Reference/Map)。
その解決策について何か考えはありますか?これを行うためのより良い方法は何でしょうか?