SSブログ

わけがわからない [Mindstorm]

NXCにはOnFwdSyncという2つのモーターを同期させて回転させる命令がある。ロボットを直進させたいときは便利な命令だ。どのくらい正確かは、その回転角を測る命令 MotorRotationCount を使って調べることができる。

手元にあるNXTで、高本高頼氏の書籍のプログラム

task main()
{
TextOut(20,52,"OnFwd test");
string ct;
OnFwdSync(OUT_AC,75,0);
while(FirstTick()+3000>CurrentTick())
{
ct = NumToStr(MotorRotationCount(OUT_A));
TextOut(0,32,StrCat(" OUT_A : ", ct));
ct = NumToStr(MotorRotationCount(OUT_C));
TextOut(0,16,StrCat(" OUT_C : ", ct));
Wait(100);
}
Off(OUT_AC);
Wait(5000);
}

を動かすと、A が 1684 , C が 1685 の表示なので違いはほとんどなく、走らせてもまっすぐ走る。

ちなみに、OnFwdSync を OnFwd に書き換えると、A が 1740 , C が 1869 だから違いが大きく、走らせてもまっすぐは走らない。

それはいい。

しかし、

#define r_turn90 OnFwd(OUT_C,50);OnRev(OUT_A,50);Wait(500);Off(OUT_AC);
task main()
{
SetSensorTouch(IN_1);
int i = 1 ;
while(i<4)
{
OnFwdSync(OUT_AC,50,0);
if(SENSOR_1==1)
{
r_turn90;
i++;
}
}
Off(OUT_AC);
}


こういう使い方をするとまっすぐには走ってくれない。理由がわからない。



しかし、OnFwd の時よりも OnFwdSync の方がモーター音がうるさい。回転数制御のための余計な不可がかかっているのかもしれない。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:学校

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0