LEDでナナイロづくり

2.レベルメーター

センサ(光や音など)の値によって変化するレベルメータ―です。

IchigoJam基板のCN4のIN2端子に、光、音、距離などを出力するアナログセンサを接続します。
この例では、光センサを繋げました。
センサの出力値は0~1023の範囲です。

30行目で、センサの値を読むと同時に90で除算しているので、Aの値には0~11になります(参照:ANA関数)。
0~11にした理由は、センサ値とLED位置が相応に比較できるようにするためです。

50行目で、LED位置(変数I)よりセンサ値(変数A)が大きければ、色(変数C)を設定します(C=4:青)。そうでなければ、色はなし(C=0)を設定します(参照:IFTHENELSE命令)。
センサ値が0であれば、どのLED位置にも色は設定されないので、ひかりません。

WS.LED命令も、FOR~NEXTですべての色設定の後に実行するようにしました。
LED位置すべての色設定を終えてからLEDを表示することで、処理も速くなります(80行目)。

10 ‘M.6 レベルメーター
20 CLV:L=100
30 A=ANA(2)/90
40 FOR I=0 TO 11
50 IF A>I THEN C=4 ELSE C=0
60 GSB @SET_WS.LED(I,C,L)
70 NEXT
80 WS.LED 12
90 GOTO 30


※次を加えると、変数I,C,Lの変わり方が画面に表示されます。
45 PRINT “I=”;I,”C=”;C,”L=”;L

※このプログラムでは、センサ値が0だとLEDは光りませんが、次のように比較条件式を変えると、最低1つのLEDは光らせることができます(参考:比較条件式)。
50 IF A>=I THEN C=4 ELSE C=0

※ 次のプログラムを加えると、 レベルが高いほど(センサ値が高いほど)明るくひからせることができます。
LED位置(変数I)の小さい順に、 輝度(変数L)に、
5,6,9,14,21,30,41,54,69,86,105,126 の値が入力されます。
55 L=5+I*I