RGBカラーのLEDドットマトリックスパネルのデザインには表計算ソフトを使っています。
micro:bitで動かす64X32RGBディスプレイの画像を表計算ソフトで作ってみた

今度はLEDパネルのデザインに中間色を使いたくて,表計算のセルの色のRGB要素を取り出す関数を使ってみました。


なお,表計算ソフトはLibreOffice calcです。また標準の関数はないのでいろいろなWebページを参照しながらマクロをLibreOffice BasicにVBA(Visual Basic for Applicatin)書式で書いています。


実際に動かしてみたところです。色のついたセルのRGB値を抽出しています。
ORG行:関数からの返り値
RGB行:返り値で色指定無しを黒に
R,G,B行:各色要素の値(0-255)




LibreOffice calcで標準の”GREEN"は混合色になっているようで,セルの書式設定で確かめるとRGBともにちゃんと計算できていましたV(^^)。

計算式は次図のようになっています。



"=GET_RGB(参照セル)"というのが作った関数で,中身はシンプルです(^^;;;;;
なお,1行目の"Option VBASupport 1"でVBA書式で書くことを宣言しています。



この関数の返り値はLong定義の32bit整数で,下位8bitがR値,次の8bitがG値,最上位がB値です。色指定の無いセルからは"-1"が返ってきています。

R,G,B個別の値を8bitごとに抽出するために表計算側で少々計算しています。






以下は忘れないように手順と注意点です。

1.LibreOfficeの関数,マクロの書き方

 1) [ツール]->[マクロ]->[マクロの管理]->[LibreOffice BASIC]を開く




 2) 一度作ると「編集」で,新作は「管理」の「新規作成」で作成する
  作った関数やマクロは作成画面を閉じると"ModulX"の下に関数名やマクロ名で自動的に保存される。





2.セルの色指定は自動計算起動の対象外!!

 セルの色指定は書式項目の一つなので自動計算の対象外です。セルの色を変更した時は,手動で「無条件再計算」を行わないと関数が働きません。
[データ Data]->[計算 Calculate]->[無条件再計算 Recalculate Hard]


なお,セルの自動計算は計算式の変化の時しか行われないようです。数値や文字だけの入力も計算式の変化と考えられます。

次図はオヤジの脳内セル構造図です(^^;;;;;;;
こういうイメージで捉えると第1層の計算式の変更しか「自動計算機能」はチェックしていないということでしょうね。



ちなみに,,結果の数値だけコピペしたい時は第2層だけペーストしないと変になりますね。ま,そのためにも条件付きのコピー・ペースト機能があるわけですから。



さて,なんとか表計算ソフトでのLEDマトリックスのデザインでも中間色がデータとして扱える目処がつきました。

とはいっても64x32や128x32ドットなどでLEDをダイナミック点灯させるHUB75規格のフルカラーディスプレイでは中間色を扱うにはまだまだオヤジに力が足りません(^^;;;;;;;

一方,NeoPixel系は1個1個のRGBLEDにマイコンが内蔵されていて,R,G,Bの各要素で256*256*256のフルカラーの表現がシンプルに可能なはず,,,,,,
です。ぼちぼちと(^^;;;。