LED色設定サブルーチン
LED色設定: @SET_WS.LED(I,C,L)
1000 @SET_WS.LED(I,C,L)
1010 IF I>33 THEN I=33
1020 IF(L<1 OR L>255)AND(C%8) THEN L=20
1030 [I*3]=C&1*L
1031 [I*3+1]=C>>1&1*L
1032 [I*3+2]=C>>2&1*L
1033 RETURN
変数 I LED点灯位置
0~33 (LEDの数は最大34個まで)
———————————————————————–
変数 C 色
0■無(光らない)、1■緑、2■赤、3■黄、4■青、
5■シアン(青緑)、6■マゼンタ(紅紫)、7■白
———————————————————————–
変数 L 輝度(明るさ)
1~255(範囲外は強制的に20にする。100以上はあまり変わらない)
———————————————————————–
プログラムの説明
1000 @SET_WS.LED(I,C,L)
サブルーチンラベル
1010 IF I>33 THEN I=33
LED数の範囲チェックです
LED数Iが上限を超えているなら、上限値33にします
1020 IF(L<1 OR L>255)AND(C%8) THEN L=20
輝度Lが0か255を超えているなら、20にします
ただし色Cが0なら、なにもしません
この判断で、光らせたくない時はCを0で使用できます
1030 [I*3]=C&1*L
1031 [I*3+1]=C>>1&1*L
1032 [I*3+2]=C>>2&1*L
GRBの各色を作ります
C&1 でCの0bit目(十進数では1)を論理積で取り出し、緑、黄、青緑、白の要素です(下図の光の三原色を参照)。
C>>1&1 は1bit目(十進数では2)で、赤、黄、紅紫、白の要素となります。
C>>2&1 は2bit目(十進数では4)で、青、青緑、紅紫、白の要素となります。
それぞれの色の要素に輝度変数Lの値を掛けることで、フルカラーLEDを光らせる値を作ることができます。
「色設定サブルーチン」の詳しい説明はこちらのサイトも参照してください。
1033 RETURN
サブルーチン終了


このサブルーチンを使えば、点灯位置や色などの面倒な計算をしなくても、光らせたいLED位置(変数I)、色(変数C)を決めるだけで、LEDが鮮やかに光ってくれます。
サブルーチンでは、明るさ(変数L)も指定でき、値を指定しないとき(0のとき)でも、20をデフォルト設定します。
I=0:C=1:GSB 1000
OK
WS.LED12
OK
I=1:C=2:GSB 1000
OK
WS.LED12
OK
I=2:C=3:GSB 1000
OK
WS.LED12
OK
I=3:C=4:GSB 1000
OK
WS.LED 12
OK
I=4:C=5:GSB 1000
OK
WS.LED 12
OK
I=5:C=6:GSB 1000
OK
WS.LED 12
OK
I=6:C=7:GSB 1000
OK
WS.LED 12
OK
■■■■■■■□□□□□
01234567891011
LEDを消したい時は、変数Cの色を0にします 。
たとえば、3番目のLEDを消すには、、、。
I=2:C=0:GSB 1000
OK
WS.LED 12
OK
■■□■■■■□□□□□
01234567891011
すべてのLEDを消すには、配列をすべて0にします。
FOR I=0 TO 101: [I]=0: NEXT
OK
WS.LED 12
OK
※[I]=0 を [I]=RND(256) で試してみよう!!
CLV命令を使うと配列を全部0にしてくれますが、変数A~Zも0になるので注意してください (参考:CLV命令) 。
CLV
OK
WS.LED 12
OK
