2015年6月13日土曜日

IchigoJamで遊ぶ、その2

 2ヶ月くらい前に IchigoJamを手に入れて、早速タミヤの昆虫ロボットに載せてがらくたを作りましたが、その後、IchigoJamはファームが日々改良されて、色々機能も増えたりしているようです。その中で、昆虫ロボットを作ったときにはアナログ入力が1chしか使えなかったのが、今は2ch使えるようになっていて、このアナログ2chを活かして何かできないかなぁ?と思っていたんですが、なかなか手を動かせずにいました。先日、アマゾンを「ロボット 工作」とかで検索して徘徊していたとき、前回の昆虫ロボットと同じタミヤのロボクラフトシリーズで「ボクシングロボット」というのを見つけました。面白そうなので、早速ポチって、これにIchigoJamとセンサ×2の組み合わせを考えることにしました。


 センサは前回と同じPSD測距センサです。前回は一つだけで手前にものがあったら避ける動作をさせましたが、今回は手前にあるものに向かわせる動作を左右に2つのPSDセンサを使って、やってみようと思います。

 まずは、タミヤのROBO CRAFTシリーズのボクシングロボット(Boxing Fighter)を開梱。



  説明書に従って組み立て・・・の前に、いつものDRV8830 I2Cモータドライバをモータに取り付けます。ロボットのボディ内部に余裕があるので、モータドライバ基板は絶縁テープで巻いて、ボディ内に入れてしまいます。




 モータにノイズ用のコンデンサとドライバへの配線をはんだづけしてギアボックスに取り付け。


 あとは、組み立て。本来リモコンと繋ぐ線を出す切り込みから、電源、GND、I2CのSDA、SCLの4本の線を取り出しています。












 形ができたところで、前回の昆虫ロボットからIchigoJamを取り外して、


 ボクシングロボットの背中にIchigoJamと単3×2本用電池ボックスを取り付けました。



 それから、頭の上にPSD測距センサを左右斜めに向けて取り付け。




 コネクタを差すために簡単なドータボード(シールド)を準備しました。



できあがり。


 この時点ではPSDセンサは縦置きにしていますが、実際に動かしてみて、調整した結果、最終的には横向きに取り付けることになりました。



 プログラムを入れて実際に動かしてみたところ、センサは横向きであまり左右に斜めにしない方向で落ち着きました。



 ボクシングロボット対博士。


 動かしてみたところです。ロボットの左側の足が右側に比べて接地が悪く(短い?)、左方向へはすぐに方向転換できるのですが、右方向へ向くのに時間がかかってしまいます。


 以下、ソースです。
10 clt:clv:A=#64:B=#65:goto 610
110 if C<0 E=1 else E=2
120 if C=0 E=0
130 E=E+(ABS(C)-5)<<2
140 if D<0 F=1 else F=2
150 if D=0 F=0
160 F=F+(ABS(D)-5)<<2
170 poke #700, 0, E, F
180 R=i2cw(A, #700, 1, #701, 1)
190 R=i2cw(B, #700, 1, #702, 1)
200 return
300 ' stop
310 C=0:D=0:gosub 110
320 return
400 ' right punch to left
410 C=0:D=-50:gosub 110
420 return
460 C=50:D=0:gosub 110
470 return
510 C=50:D=-50:gosub 110
520 return
600 ' main
610 P=ANA(0):Q=ANA(2)
620 ?P;",";Q
640 if P>=300 and Q<300 gosub 410
650 if P<300 and Q>=300 gosub 460
660 if P>300 and Q>=300 gosub 510
670 if P<300 and Q<300 gosub 310
680 goto 610
1000 ' 以下コメントです。入力不要。。
1001 ' タミヤのボクシングロボットをDRV8830 I2Cモータドライバと
1002 ' PSD測距センサで動かす。
1110 ' 変数説明:
1120 ' A: 左モータ用DRV8830のI2Cアドレス
1130 ' B: 右モータ用DRV8830のI2Cアドレス
1140 ' C: 左モータのスピード
1150 ' D: 右モータのスピード
1160 ' P: 左PSD測距センサのアナログ値
1170 ' Q: 右PSD測距センサのアナログ値
2000 ' プログラムブロック説明
2010 ' 10 初期化して、メイン処理へ
2020 ' 110~200 モータのスピード設定
2040 ' 410~420 右パンチを出して、左方向へ進む
2050 ' 460~470 左パンチを出して、右方向へ進む
2060 ' 510~520 左右のパンチで前進
2070 ' 600~680 メイン処理。PSD測距センサの値で動作分け。
view raw gistfile1.txt hosted with ❤ by GitHub



0 件のコメント:

コメントを投稿