[[2005/A1]] #contents *センサー2個・モーター2個でライントレースするロボット [#q07aa3c7] *特徴 [#d0a84d4b] 速度が速いとセンサーが反応する前に通り過ぎてしまうのでなるべくゆっくり進むように直進を【OnFwd(OUT_A+OUT_C);Wait(2);Off(OUT_A+OUT_C);Wait(2);】のように工夫した。これにより、大抵の線は外れることなくトレースできる。 プログラムは単純明快である。 //製作者 そるとと 高尾 #define THRESHOLD 34 task main () { SetSensor(SENSOR_1, SENSOR_LIGHT); SetSensor(SENSOR_3, SENSOR_LIGHT); //センサー1、3が光セン サーであると定義 while (true) { if (SENSOR_3<THRESHOLD) //センサー3がライン上にあるとき { OnFwd(OUT_A); //右に曲がる OnRev(OUT_C); Wait(10); } if (SENSOR_1<THRESHOLD) //センサー2がライン上 にあるとき { OnFwd(OUT_C); OnRev(OUT_A); //左に曲がる Wait(5); } else //どちらもライン上にな いとき { OnFwd(OUT_A+OUT_C);Wait(2); Off(OUT_A+OUT_C);Wait(2); //直進 } } } *感想 [#r93e0241] こんな簡単なプログラムでいいのかとも思ったけれども、すごいうまくトレースができてうれしかった。あとこれだと鋭角も曲がれます!! コメントをどうぞ -モータ1つでのプログラムも載せましょう。 -- [[ゆん(TAM)]] &new{2005-12-09 (金) 15:42:00}; #comment *センサー2個・モーター1個でライントレースするロボット [#jb594ae5] *特徴 [#y7a0b6b1] すごーくゆっくり進みます。 //製作者 そるとと 高尾 #define THRESHOLD 34 task main () { SetSensor(SENSOR_1, SENSOR_LIGHT); SetSensor(SENSOR_3, SENSOR_LIGHT); //センサー1、3が光セン サーであると定義 while (true) { if (SENSOR_1<THRESHOLD) //センサー3がライン上にあるとき { OnFwd(OUT_A); //右に曲がる until(SENSOR_1>THRESHOLD); } if (SENSOR_3<THRESHOLD) //センサー2がライン上にあるとき { OnRev(OUT_A); //左に曲がる until(SENSOR_3>THRESHOLD); else //どちらもライン上にないとき { OnFwd(OUT_A); //右へ動く } } } *感想 [#r80470af] 遅い・・・・・・・・・・。パワー不足だったので意地になってパワーをあげまくったら、遅くなってしまった。でも亀みたいで愛着がわく。ロボットの写真を下に添付しておきます。コメントをどうぞ #comment