目次
前
次
乱数で遊ぶ
IchigoJamのBASICには、乱数が用意されています。
0からN-1までの乱数を生成するには、A=RND(N)
としておけばよいのです。
乱数を利用すれば、動作試験が簡単にできます。
次のような場面を想定。
0から7までの数値が与えられたとき、1、4のとき
70を出力し、それ以外は50を出力する。
プログラムでは、次のように定義します。
10 ' test5
20 @LOOP
30 LET R,RND(8)
40 LET D,50
50 IF R=1 OR R=4 LET D,70
60 ? D
70 IF BTN() GOTO @EXIT
80 GOTO @LOOP
90 @EXIT
95 END
次のようなクリスマスツリーのLEDを点滅させる
ときには、点灯するLEDの位置をデタラメに決め
ないとならないでしょう。
回路図では、次のようにすればよいはず。
IchigoJamには、OUT_1からOUT_6まで、6出力ある
ので、これら出力にLEDを接続して、どのLEDを点灯
するのかを決めましょう。
1から6までの値を決めたいので
L = RND(6)+1
として、0から5を生成して1を
加えます。
Lに1から6の値が入っているので
該当するLEDを点灯するには、次の
ように書けばよいはず。
OUT L,1
他のLEDは消灯しておきたいので、最初に
全部のLEDを消灯してから、上の命令を
使えばよいと考えましょう。
サブルーチンにすると、以下。
100 @LON
110 FOR I=1 TO 6
120 OUT I,0
130 NEXT
140 OUT L,1
150 RETURN
サブルーチンを呼び出す方は、Lの値を決めて
おけばよいので、乱数で値を決めたならGSBで
呼び出すことにして対応。
10 ' test51
20 @LOOP
30 L = RND(6)+1
40 GSB @LON
50 WAIT 60
60 IF BTN() GOTO @EXIT
70 GOTO @LOOP
80 FOR I=1 TO 6:OUT I,0:NEXT
90 END
100 @LON
110 FOR I=1 TO 6
120 OUT I,0
130 NEXT
140 OUT L,1
150 RETURN
全部のLEDを消灯することは、最初と最後に
やっておいた方がよいので、書き換えます。
10 ' test52
20 GSB @LOFF
30 @LOOP
40 L = RND(6)+1
50 GSB @LOFF:GSB @LON:WAIT 60
60 IF BTN() GOTO @EXIT
70 GOTO @LOOP
80 GSB @LOFF
90 END
100 @LOFF
110 FOR I=1 TO 6
120 OUT I,0
130 NEXT
140 RETURN
200 @LON
210 OUT L,1
220 RETURN
OUT命令で'1'を与えたときにLEDが点灯するのでは
なくて、'0'を与えたときに点灯するような、次の
回路では、どうすればよいか考えます。
'1'で消灯するので、2つあるサブルーチンを
次のように書き換えるだけで対応できるはず。
100 @LOFF
110 FOR I=1 TO 6
120 OUT I,1
130 NEXT
140 RETURN
200 @LON
210 OUT L,0
220 RETURN
サブルーチンの内容を変更すれば、呼び出し側が
何もしないでよいため、わかりやすいでしょう。
目次
前
次