目次

IchigoJamCarを動かす

 IchigoJamは、LPC1114にBASICインタプリタの
 載せたパーソナルコンピュータ。




 ¥1500で入手できることから、1(イチ)5(ゴ)と
 名称をつけられています。

 IchigoJamの入出力に、赤外線センサーとDCモータ
 ドライブ回路を接続してできたのが、IchigoJamCar。

 コース上の移動するIchigoJamCarは、以下。




 2018年2月11日、小樽市総合博物館でのIchigoJam
 体験会にて、コース上を動かしたので、その時の
 内容をレポートします。

 体験会の主催者側で、ハードウエアと開発環境は
 用意されていたので、センサー入力と制御出力を
 どう扱って小学生に説明したのかを、順を追って
 紹介します。

 センサー入力

  IchigoJamのBASICには、デジタル入力として
  次の4ピンが用意されています。

  基板上では、写真の枠で囲んだ部分に
  割り当てられています。



  センサーの出力は、IN_1、IN_2に接続されているので
  変数R、Lに値を入力し確認するには、以下とします。

 20 R=IN(1):L=IN(2)
 25 ? L,R
100 GOTO 20

  このプログラムを動かすと、次のことがわかりました。

  紙に描いたコースでは、白を検出すると論理値で'0'を
  表示。黒では論理値で'1'を表示。

  IchigoJamCarをコース上で動かすには、センサーの値
  を使うので、この内容を忘れないようにメモ。

 制御出力

  IchigoJamの出力は、以下の6ビットがあります。

  基板上では、写真の枠で囲んだ部分に
  割り当てられています。



  1個のモータは、正転と逆転ができると説明されました。

  各ビットに論理値を出力して、タイヤの挙動を確認。
  6ビットでタイヤに挙動があったのは、以下。

  車を前進、後退、左回転、右回転させるための
  命令の組合せをリストします。

 移動制御

  センサー値により、コース上を移動するために
  どういう組合せを作ればよいか考えます。

  右に外れている

   左に動かせば、コースを辿れます。



   BASICのコードにすると、以下。

IF R=0 THEN OUT 4,0:OUT 2,1:WAIT 15

   WAITで、右のモータだけ回している
   時間を指定。15で、250ms程度。

   Rが0になっているので、それを出力すると
   考えれば、次のように書いてもOK。

IF R=0 THEN OUT 4,R:OUT 2,1:WAIT 15

  左に外れている

   右に動かせば、コースを辿れます。



   BASICのコードにすると、以下。

IF L=0 THEN OUT 2,0:OUT 4,1:WAIT 15

   Rが0になっているので、それを出力すると
   考えれば、次のように書いてもOK。

IF L=0 THEN OUT 2,L:OUT 2,0:WAIT 15

  コースから外れていないときは、直進すれば
  よいので、IchigoJamCarをラインに沿って
  走らせるには、次のようにまとめられます。

 20 R=IN(1):L=IN(2)
 25 ? L,R
 30 OUT 4,1:OUT 2,1
 50 IF R=0 THEN OUT 4,R:WAIT 15
 60 IF L=0 THEN OUT 2,L:WAIT 15
100 GOTO 20

 これで、IchigoJamCarはライントレーサロボットになります。

 大学生レベルでは配列を利用して、変数を
 極力少なくしたコードを作成すべきでしょう。

 センサーは左右に1ビットずつなので、2進数で
 取り得る組合せは、以下。

  • (L,R)=(0,0)
  • (L,R)=(0,1)
  • (L,R)=(1,0)
  • (L,R)=(1,1)  左か右のどちらかに外れたときを除いて  直進なので、10進数に変換してまとめる  と、次のようにまとめられます。 20 LET [0],IN(2) << 1 | IN(1) 25 ? [0] 30 OUT 4,1:OUT 2,1 50 IF [0]=1 THEN OUT 4,0:WAIT 15 60 IF [0]=2 THEN OUT 2,0:WAIT 15 100 GOTO 20  2進数と10進数の扱いができるようになれば  中学生以上でも対応できるでしょう。  ラベル、コメントを使うと、もう少しわかりやすい  コードになります。 20 @LOOP 22 LET [0],IN(2) << 1 | IN(1) 24 ? [0] 30 ' straight 35 OUT 4,1:OUT 2,1 50 ' turn left 55 IF [0]=1 THEN OUT 4,0:WAIT 15 60 ' turn right 65 IF [0]=2 THEN OUT 2,0:WAIT 15 100 GOTO @LOOP

  • 目次

    inserted by FC2 system