走れ!ろぼっとカー 黒ラインを見つけろ!!

赤外線トラッキングセンサを使って、黒い道路に沿って走る、ろぼっとカーのキットです。
道路幅はロボットカーよりも少し広い幅になります。
左右どちらかのセンサが、道路からはずれると、外れた方向と反対に向きを変えるように制御します。

コース見本をダウンロードして、いろいろ組み合わせてコースを作ってみましょう。
 途中でコースがなくなったり、分岐したコースも走れるようサンプルのプログラムを改造してみましょう。

【構成】
1.IchigoJam-S基板×1
2.五稜星基板 (STAR★MTDRVv0.3に対応) ×1 (NextDay)
3.赤外線トラッキングセンサ(3ch) [T5000-3CH-M2]×1 
4.3Vモーター+ギアボックス+タイヤ ×2
5.単4(1.5V) × 2本
6.車体(3Dプリンタによるオリジナル)×1

【サンプルプログラム】

  1. プログラムを修正するときは、電池BOXの電源をOFFにし、ビデオ、キーボード、USB電源の順にケーブルを接続します。
  2. IchigoJam基板の電源(SW1)はONのままにしておきます。
  3. プログラムはSAVE0に保存します。 USB電源 、キーボード、ビデオの順にケーブルを外します。
  4. 走らせるときは、 コースに車を置いてから、タクトスイッチを押しながら電源BOXの電源スイッチをONにします。

【ソースコード】

1 ‘LINE TRACE ROBOT GoryoSEI by NEXTDAY
10 OUT 0 :BEEP 10,60 :BEEP : WAIT 120
20 L=IN(4) :C=IN(2) :R=IN(1)
25 PRINT L,R
30 OUT 4,1 :OUT 2,1
50 IF R=0 THEN OUT 4,0 :WAIT 5
60 IF L=0 THEN OUT 2,0 :WAIT 5
100 GOTO 20

【プログラム説明】
10行目 音を鳴らして、2秒待つ(スタート時の準備)
20行目 左(L)と右(R)のセンサー値を調べる(このプログラムでは中心(C)のセンサ値は使いません)
25行目 センサー値を表示する
    道路だと1(黒)、外れていると0(黒以外)、の値になります
30行目 左モータ、右モータとも回す(前進)
50行目 もし、右(R)センサーが0(道路から外れた)ならば 左モータを5/60秒止める(左へ曲がる)
60行目 もし、左(L)センサーが0(道路から外れた)ならば 右モータを5/60秒止める(右へ曲がる)
100行目 20行目に戻る

五稜星 2chモータードライバー基板

北海道150年を記念して、開拓使のシンボル 五稜星 を模した
モータードライブキット。
IchigoJam T や dake★IO に取り付けて、2個のモーターを動かすことができます。
左右にそれぞれ1個のFETを備え、一方向のみに回転ができます。
左右のLED(青・緑)で入力信号も確認することができます。

4つの入力端子(IN1、IN2、IN4、BTN)でデジタルとアナログに対応しています。
赤外線センサーを接続してライントレーサーや光センサーを接続してモーター制御などができます

未来に向かって「前進!前進!!」

五稜星モータードライブ基板製作マニュアル
五稜星_v03make–201808013 (PDF 6.18MB)

信号機プログラムをつくろう2(右折信号付き)

車用(緑・黄・赤 + 右折)と歩行者用(青・赤)の新バージョンの信号機キットです。
また、「信号機プログラムをつくろう1」のプログラムをもとに、OUT命令を二進数表記にしました。

参照:信号機wiki

【サンプルプログラム】
プログラムを入力したら、RUNしてください。
IchigoJam本体のタクトスイッチを押すと、信号機が歩行者用に切り替わります。

【ソースコード】

10 ‘NEW TRAFFIC LIGHT by NEXTDAY (Binary version)
20 OUT ‘010001 :WAIT 180 :’クルマ ミドリ,ホコウシャ アカ
30 IF BTN()=0 CONT :’オシボタンヲ マツ
40 OUT ‘010010 :WAIT 120 :’クルマ キイロ
45 OUT ‘011100 :WAIT 120 :’クルマ アカ,ウセツ
50 OUT ‘010100 :WAIT 60 :’クルマ アカ
60 OUT ‘100100 :WAIT 180 :’ホコウシャ アオ
70 FOR I=1 TO 7
80 OUT ‘000100 :WAIT 15 :’ホコウシャ アオ テンメツ
90 OUT ‘100100 :WAIT 20
100 NEXT
110 OUT ‘010100 :WAIT 60 :’クルマ アカ,ホコウシャ アカ
120 GOTO 20

【プログラム説明】
20行目 車用:緑、歩行者用:赤。3秒間(180TICK)点灯する(OUT1,1:OUT5,1)
30行目 押しボタンを(押されるまで)待つ。
40行目 車用:黄 を2秒点ける(OUT2,1)
45行目 車用:赤、車(矢印)用:青 を2秒点ける(OUT3,1:4,1)
50行目 車用:赤、を1秒点ける(OUT3,1)
60行目 歩行者用:青 を3秒点ける(OUT6,1)
70~100行目 歩行者に間もなく赤に変わることを知らせるため、歩行者用:青を7回点滅
110行目 車用:赤、歩行者用:赤。1秒点ける
120行目 20行目に戻る

【参考】
同じ動作をOUT命令で書いたプログラムを掲載します。
二進表記とどこが違うのか比べてみてください。

10 ‘NEW TRAFFIC LIGHT by NEXTDAY (OUT command version)
20 OUT 0: OUT 1,1: OUT5,1: WAIT 180
30 IF BTN()=0 CONT
40 OUT 1,0: OUT 2,1: WAIT 120
45 OUT 2,0: OUT 3,1: OUT 4,1 :WAIT 120
50 OUT 4,0: WAIT 60
60 OUT 5,0: OUT 6,1: WAIT 180
70 FOR I=1 TO 7
80 OUT 6,0: WAIT 15
90 OUT 6,1: WAIT 20
100 NEXT
110 OUT 6,0: OUT 5,1: WAIT 60
120 GOTO 20

信号機プログラムをつくろう1

車用(緑・黄・赤)と歩行者用(青・赤)が一体になったオリジナル信号機キット。
IchigoJamにそのまま取り付けて、OUT命令による信号機プログラムの学習ができます。

はじめは、車用の3色だけを使って順に点燈させる基本からスタート。
応用として、歩行者青信号の点滅方法や、IchigoJam本体のボタンやスピーカを使って、歩行者が安全に渡れるようにための制御方法が学べます。

サンプルプログラム

【ソースコード】 

10 ‘NEXT-DAY信号機(OUT命令)
 20 OUT 1,1: OUT5,1: WAIT 180 :’クルマ ミドリ,ホコウシャ アカ
 30 LED 1: IF BTN()=0 GOTO 30 ELSE LED 0: WAIT 60 :’オシボタンヲ マツ
 40 OUT 1,0: OUT 2,1: WAIT 120 :’クルマ キイロ
 50 OUT 2,0: OUT 3,1: WAIT 60 :’クルマ アカ
 60 OUT 5,0: OUT 6,1: WAIT 180 :’ホコウシャ アオ
 70 FOR I=1 TO 7
 80 OUT 6,0: WAIT 15 :’ホコウシャ アオ テンメツ
 90 OUT 6,1: WAIT 20
100 NEXT
110 OUT 6,0: OUT 5,1: WAIT 60 :’ホコウシャ アカ
120 GOTO 20

【プログラム説明】
20行目.最初は車が緑、歩行者が赤。3秒点灯する。
30行目.押しボタンを待つ(押されるまで)。
40行目.車用:黄が2秒点く
50行目.車用:赤が1秒点く
60行目.歩行者用:青が3秒点く
70〜100行目.歩行者用:青を点滅
110行目.歩行者用:赤が1秒点く
120行目.プログラムを最初から繰り返す

キー入力を覚えよう

プログラムを作るためには、プログラムからキーを打ち込まなければなりません。
キーボードの記号・特殊キーの文字の形や読み方をおぼえましょう。
IchigoJamで使う記号の読み方をまとめました。

IchigoJamで使用する記号や文字については、チートシートも参照してください。
http://www.openspc2.org/reibun/IchigoJam/etc/cheat-sheet/0002/cheatsheet_v1.2.pdf

キー配列についてはJISキーボード用を使うことを想定しています。
https://ja.wikipedia.org/wiki/Template:106キーボードの配列

IchigoJamではローマ字入力が採用されています。
ローマ字の英→カナ変換はイチゴジャムレシピを参照してください。


記号読み方/キー入力方法
 ’アポストロフィ、 シングルクォート
  REM文の省略形
  Shiftキーを押しながら 7 キーを押す
  例: ‘DAKE ROBOT CAR by NEXT-DAY
 ”ダブルクォーテーション
  文字列の指定
  例: PRINT “モジヲカコム”
 :コロン
  命令と命令を分ける記号
  例: OUT20 : WAIT 80 : OUT 0 : WAIT 40
 ;セミコロン
  PRINT命令のとき、改行させないときにしようする 
  例: ?”カイギョウ” ;A; “シナイ”;
 ,カンマ
  区切り文字 
  例: OUT 1,0  ?”1+1=” , 2  LET [0],1,2,3,4,5,6,7,8,9
 .ピリオド、ドット
  小数点だがIchigoJamでは使わない
 @アット、アットマーク
  ラベルとして使用
  例: GOTO @MAIN
 #シャープ
  16進数の表現
  例: ? #FF A=#7E
 バッククォート
  2進数の表現
  Siftキーを押しながら @ キーを押す
 $ドル、ダラー
  文字列関数の時に使用
  例: ? STR$(#0900)  
 !びっくり、ノット
  NOT式の省略形 
  例:IF !BTN() CONT
    IF A != 0 THEN ?"ノット イコール"
 |たてぼう、オア
  論理和(OR)
  Siftキーを押しながら \ キーを押す
  例: IF K=28 | K=29 THEN LED1
 &アンパーサンド、アンド
  論理積(AND)
  例:  A=X-(K=28 & X>0)+(K=29 & X<31)
 ^ハット
  排他的論理和 XOR
  例: B=A ^#FF
 ~チルダ
  ビット反転
  Siftキーを押しながら ひらがなの へ キーを押す
  例1: A=10111011: ? BIN$(~A)
  例2: B=B+~A
 ( )かっこ、かっことじ
  関数命令や計算のときの優先に使用する
  例: ? ASC(“a”)
     A=X-(K=28)+(K=29)

 [ ]
だいかっこ、だいかっことじ
  配列を指定するときに使用する
  例: [1]=A  
     LET [0],”モジレツヲハイレツニ”

ちいさなコンピュータをつくろう


 IchigoJamプリント基板キットには、簡単な組み立て方説明書やBASICリファレンスなどが含まれています。
しかし、国野 亘 さんが写真を加えてより詳しく説明した「IchigoJam |の組み立て方」を公開していますので、こちらを参考に組み立てるのがよいでしょう。
CC BY ライセンス扱いとなっていますので、Nextdayの講座でも使用しています。

IchigoJam S の組み立て方 | ボクにもわかる

工具や抵抗のカラーコードは、初代 IchigoJam の組み立て方
が参考になります。
 また、組み立て方・説明書・読み物(IchigoJam公式サイト)や
IchigoJam の組み立て(イチゴジャムレシピ)も参考になります。
はんだ付けは、以下のムービーも参考にしてください