ライントレース (1:センサ、モータ各2)†
// 作成者:今西 高橋 東
// 作成日:2005年12月2日
task main ()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); // センサ1(左)は光センサ
SetSensor(SENSOR_3,SENSOR_LIGHT); // センサ3(右)は光センサ
while(true) // 無限に繰り返し
{
OnFwd(OUT_A+OUT_C); // 前進
until((SENSOR_1 <40) || (SENSOR_3 <40)); // いずれかのセンサがラインに掛かるまで
if(SENSOR_1 <40) // センサ1がラインに掛かった場合
{
OnFwd(OUT_C); // 右のモーターを正回転
OnRev(OUT_A); // 左のモーターを逆回転
until(SENSOR_1 >40); // センサ1がラインから離れるまで
}
if(SENSOR_3 <40) // センサ3がラインに掛かった場合
{
OnFwd(OUT_A); // 左のモーターを正回転
OnRev(OUT_C); // 右のモーターを逆回転
until(SENSOR_3 >40); // センサ3がラインから離れるまで
}
}
}
ライントレース (2:センサ、モータ各1)†
task main()
{
while(true) // 無限に繰り返し
{
SetSensor(SENSOR_2,SENSOR_LIGHT); // センサ2は光センサ(中央)
OnFwd(OUT_B); // 右に回転
until(SENSOR_2>40); // センサ2がラインから離れるまで
OnRev(OUT_B); // 左に回転
until(SENSOR_2<40); // センサ2がラインに掛かるまで
}
}
難しかった点†
- ifを使うのに慣れていなかったのでプログラムを組むのが難しかった。(1)
- モータが一つなので力が半減し、本体の重量に耐えうるようにするのが大変だった。(2)
- モータが一つのときにギヤーとギヤーのかみあいが悪く、カチカチと壊れそうな音がなり本体が上手いこと進むことができなかったことをどのように改善するかということが大変だった。(3)
工夫した点†
- センサーにラインを辿らせるのではなくライン以外の部分を辿らせた。(1)
- 小刻みに左右に動いてもそれについて来れる様に前輪のつくりを工夫した。(2)
反省点†
- 直線や緩いカーブでは速いが、急なカーブでは小刻みに方向転換するため遅くなってしまう。(1)
- 幅を狭くしたためバランスが悪くなった。(2)
- ラインに向かうのではなく、逆に離れさせてトレース出来ないかと試作のつもりで作ったのが思ったより良い結果を出した事に驚いた。(1)
- プログラムは簡単だったが本体の構造に想像以上に手間取ってしまった。試運転で走らせた瞬間に分解した時は焦った。(2)
コメントはこちらまで†
- これはモータが2つのプログラムでよいのですね? -- かとりーぬ(TA)
- モータ2つのプログラムです。 -- 今西
C6のTOPへ
tya1
0
&counter([total|today|yesterday]);