4.温度計
環境測定ユニット「IchigoJam&ESPJUICE」と、フルカラーLEDのWS2812Bを10個使用した、温度計の表示器です。

10個のLEDで18〜27度を点灯します。
温度によって点灯色を色分けします。
IchigoJam&ESPJUICEの使い方と、温度測定のプログラミングについては、「1/11,1/12 IchigoJamでデータサイエンスに挑戦しよう@小樽」講座で使用した、「小樽工作教室テキスト」を参照してください。
‘フルカラーLED温度計
30 @MAIN:WAIT60:?”GETKIO”:WAIT30
40 INPUT “18~27゚”,A
50 GSB@ONDOKEI
60 GOTO@MAIN
200 @ONDOKEI
230 FOR I=0 TO 9
240 IF I<2 C=4:L=99:GOTO 100 :’18~19゚blue
242 IF I<5 C=1:L=20:GOTO 100 :’20~22゚green
244 IF I<7 C=3:L=30:GOTO 100 :’23~24゚yellow
246 C=2:L=80 : ’25~27゚red
250 IF I>A-18 C=0
260 GSB @SET_WS.LED(I,C,L)
265 ? I+T, ”C”;C, ”L”;L
270 NEXT
280 WS.LED 10
290 GOTO @MAIN
IF命令で条件を並べて色を作る代わりに、パラメータ設定で色を作る方法です。
@ONDOKEIをサブルーチンにして、プログラミングで汎用的に使えるようにしました。
このプログラムでは、18度以上と未満で温度計の色を分けています。
変数Tには、0番目のLEDを点灯するときの温度を指定し、
文字列変数Sには、温度順に点灯する色コードを設定します。
10 @ARUN’ondokei2
20 CLV:
30 @MAIN:WAIT60:?”GETKIO”:WAIT30
40 INPUT “8~27゚”,A: IF A<18 GOTO 60
50 T=18 :S=”4411133222″:GSB@ONDOKEI: GOTO@MAIN
60 T=8 :S=”7777766666″:GSB@ONDOKEI: GOTO@MAIN
200 @ONDOKEI
210 Q=LEN(S)
220 IF !L L=30
230 FOR I=0 TO Q-1
240 C=ASC(S+I)-48
250 IF I>A-T C=0
260 LET[I*3],C&1*L,C>>1&1*L,C>>2&1*L
265 ?I+T,”C”;C,”L”;L
270 NEXT
280 WS.LED Q
290 RTN
50行目60行目 変数Tに点灯開始温度、文字列変数Sに色コードを設定してサブルーチンコールする。Sの文字数とLED数を一致させること。
210行目 変数Qに文字数=LED数を入れる。
220行目 変数L(輝度)のデフォルト値を30に設定する。
230行目 LED数分をFORループする。
240行目 文字列変数Sから、文字コード(数値)を取り出して、色コードに設定する。
250行目 T度から温度計のLEDを点灯させるため、範囲外の温度に、色コード0(消灯)を設定する。
260行目 LED位置の配列に、色コードで設定したGRB値を設定する(@SET_WS.LED(I,C,L)の等価コードです)。

この教材は「Creative Commons — CC BY-SA 4.0」の下に提供されています。
