2.レベルメーター
センサの値によって変化するレベルメータ―です。

IchigoJam基板のIN2端子(CN4)に、光、音、距離などを出力するアナログセンサを接続します。
このプログラムでは、光センサを繋げました。
センサの出力値は、0~1023で、暗ければ0、明るければ1023になります。
したがってレベルメータも、暗ければ点灯する数が少なる、明るければ全部のLEDが点灯することになります。
10 ‘M.6 レベルメーター
20 CLV:L=100
30 A=ANA(2)/90
40 FOR I=0 TO 11
50 IF I<A THEN C=4 ELSE C=0
60 GSB @SET_WS.LED(I,C,L)
70 NEXT
80 WS.LED 12
90 GOTO 30
20行目 CLV:L=100
初期設定です。
LEDの輝度を100にします。
30行目 A=ANA(2)/90 (ANA関数)
センサの値を90で割り算します。これで、0〜1023の出力範囲が0~11に狭まりますので、
12個のLEDを示すのに都合のよい値になります。
40行目 FOR I=0 TO 11
FOR〜NEXT命令で、各LEDを光らせるかどうか順に調べていきます。
50行目 IF I<A THEN C=4 ELSE C=0 (IF~THEN~ELSE命令)
LED位置(I)がセンサ値(A)より小さければ、青色(Cに4)を設定します。
そうでなければ、色はなし(Cは0)を設定します。
これで、センサ値に対応したLEDだけが点灯することになります。
・センサ値が0ならどのLEDもひかりませんが、次のように比較条件式を変えると、
最低1つのLEDは光らせることができます(参考:比較条件式)。
50 IF I<=A THEN C=4 ELSE C=0
・また、次のプログラムを加えると、センサ値が大きいほど明るくひからせることができます。
52 L=5+I*I
LED位置の小さい順に、輝度の値を 5,6,9,14,21,30,41,54,69,86,105,126 にします。
・次の命令を加えておくと、変数I,C,Lの値の変化がわかりやすいでしょう。
55 PRINT “I=”;I,”C=”;C,”L=”;L
60行目 GSB @SET_WS.LED(I,C,L)
色設定サブルーチンを呼び出します。
70行目 NEXT
40行目のFOR命令の繰り返し点です。
80行目 WS.LED 12
フルカラーLEDを光らせます。
90行目 GOTO 30
30行目に行き、プログラムを繰り返します。
