2012年2月22日水曜日

e-GadgetやTJ3だけでHMC6352を使う方法 その5

e-GadgetやTJ3だけでHMC6352を使う方法 その5
まだ動かしてません。ビルドしてもエラーは出ませんでした。

デジタル・コンパスセンサー・モジュールをキャリブレーションするには、
次のように中身を書き換えてビルドしたらいかがでしょうか?。
誰か60と(-5, 5)と(1000)を最適化してみて下さい。
ビルドしたら「あなたの付けた名前.HEX」というHex拡張子のファイルが出来るので
次からはダウンロードボタン、ファイルを開くで指定、ロボット接続実行で
キャリブレーション出来ます。

//------------------------------------------------------------------------------
// dno:0(dir), 1(pitch), 2(roll)
UINT get_dir(BYTE dno)
{
U_UINT d;
BYTE adrs = 0x42;
BYTE n = 0;
int n1;

d.W = 999;

gI2C_Buf[n++] = 0x43; //"C"
if (i2c_send(adrs, n) == false) return(d.W);

for (n1 = 0; n1 < 60; n1++) {
motor(-5, 5);
wait_ms(1000);
motor(0, 0);
}
set_Led(0, LED_ON);

gI2C_Buf[n++] = 0x45; //"E"
i2c_send(adrs, n);

if (i2c_recv(adrs, 2) == false) return(d.W);
n = 0;
d.H = gI2C_Buf[n++];
d.L = gI2C_Buf[n++];
if (0 < dno){
d.W += 90;
}
d.W /= 10;
return(d.W);
}
//------------------------------------------------------------------------------
以上。動くかな?

追記
動かしてみました。
D_I2C.cという名のファイルの中身の一部をキャリブレーション用に書き換えました。
上書き保存をしてメモ帳を閉じます。
次にC-Styleでプログラムを作ります。
セットアップコマンド Dir SensorをチェックOK
ifコマンド 条件選択 方向チェックOK
これで4行のプログラムが出来たのでビルド、ダウンロード。
床に置いて、機体の電源スイッチを入れなおしてスタートボタンを
押してプログラムを実行。機体が回り出します。30秒ぐらいで
LEDが点いて停止したら終わり。機体の電源スイッチを切ります。
注意・ここまでの間センサーモニターは起動させてはいけません。
D_I2C.cという名のファイルをHMC6352常用用に戻します。
C-Styleでまた4行のプログラムを作ってビルド、ダウンロード。
センサーモニターで表示を確認してみましょう。
途中でリセットしたりするとモードがおかしくなって動かない場合があるので
前回説明したようにD_I2C.cという名のファイルをHMC6352モード変更用にして
プロクラムを実行すれば元に戻ります。
これでは30秒程度で何周するかわからないので
もっとゆっくり3分程度まわるように
誰か60と(-5, 5)と(1000)を最適化してみて下さい。
60回、旋回、1秒です。
motor(0, 0);のあとにもwait_ms(1000);を入れましょうか。

一度ビルドしてHex拡張子のファイルとして持ち運びすれば
D_I2C.cを何度も書き換えてビルドし直すこともないですね。

0 件のコメント: