LEDでナナイロづくり

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 (IFTHENELSE命令
 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行目に行き、プログラムを繰り返します。