目次

ライントレーサを動かす

 イントレーサは、床に引いた線に沿って
 動き回るロボットです。



 ブロック図で見ると、次のようになっています。



 3つのブロックで利用するデバイスを
 見ていきます。


 センサーは、次の路面センサーを利用。



 8ビット分の路面情報を出力してきますが
 IchigoJamの入力は、4ビットしかないので
 3ビットだけを利用。

 センサーからの情報取得のサブルーチンは
 次のように書いておきます。

100 @GSEN
110 LET [0],IN(1),IN(2),IN(3)
120 A = [2]*2 + [1]
130 A = A*2 + [0]
140 S = A ^ 7
150 RETRUN

 モータを動かすためのドライバICにSN754410NEを利用。



 接続は、次のようにしておきます。



 ドライバICを動かすサブルーチンを作っていきます。
 2端子に論理値を与えて、回転させます。

300 @PMOT
310 OUT 2,L:OUT 1,R
320 WAIT 60
330 RETRUN

 論理値が、L、Rの中に入っているとしています。
 また、左右のモータは、OUT_2、OUT_1に接続して
 いると想定。

 路面センサーからの情報を取得して
 モータに論理値を出力すればよいと
 考え、動かし方をプログラムにして
 みます。

 センサーをコース上において、どんな値を
 出力してくるのかを、見ておきます。




 右に寄りすぎると、右側にあるLEDが点灯。
 左に寄りすぎると、左側にあるLEDが点灯。

 左に寄りすぎると、センサー値は4を
 右に寄りすぎると、センサー値は1を
 出力してくるので、センサー値で判断
 するサブルーチンを書きます。

200 @JUDGE
210 L=1:R=1
220 IF S=1 L=0
230 IF S=4 R=0
240 RETURN

 コンピュータの動作は、入力、判断、出力を
 繰り返すだけなので、サブルーチンを使う
 プログラムは、以下とすればよいでしょう。

10 ' test6
20 L=0:R=0:GSB @PMOT
30 @LOOP
40 GSB @GSEN:GSB @JUDGE:GSB @PMOT
50 IF BTN() GOTO @EXIT
60 GOTO @LOOP
70 @EXIT
80 L=0:R=0:GSB @PMOT
90 END

 サブルーチンを合体すると、次のようになります。

10 ' test6
20 L=0:R=0:GSB @PMOT
30 @LOOP
40 GSB @GSEN:GSB @JUDGE:GSB @PMOT
50 IF BTN() GOTO @EXIT
60 GOTO @LOOP
70 @EXIT
80 L=0:R=0:GSB @PMOT
90 END
100 @GSEN
110 LET [0],IN(1),IN(2),IN(3)
120 A = [2]*2 + [1]
130 A = A*2 + [0]
140 S = A ^ 7
150 RETRUN
200 @JUDGE
210 L=1:R=1
220 IF S=1 L=0
230 IF S=4 R=0
240 RETURN
300 @PMOT
310 OUT 2,L:OUT 1,R
320 WAIT60
330 RETRUN

 モータを回す時間を調整して
 コースに合わせた動きにでき
 ます。


目次

inserted by FC2 system