目次

ライントレースするロボット

Image0026.jpg

メンバー

竹原 プログラム

 

荒起 寝てた(後にHP編集等)

 

村松 ホームページ

特徴

●センサーを二つ使い、ライン上を確実にトレースする

右のセンサーがライン上にのったとき左に曲がり、同様に左のセンサーがライン上にのったとき右に曲がり、両方のセンサーがライン上にのっていないときは直進するというもの。センサーの数が2つあることによって、1つのものよりも速い速度でライントレースをすることが可能。

 

●バンパーで障害物を察知

バンパーを大きくすることによって、範囲が広がり確実に障害物に反応することが可能。

 

●障害物にあたると反転する

ライントレース中に障害物にあたると少々後退した後、180°回転してあたる前とは逆向きにライントレースを開始する。

苦労した点 

●センサーが二つなのでプログラムを組むのが大変だった。

  if(SENSOR_1>40){OnFwd(OUT_C);OnRev(OUT_A);}
  else{OnFwd(OUT_A+OUT_C);}
  
  if(SENSOR_3>40){OnFwd(OUT_A);OnRev(OUT_C);}
  else{OnFwd(OUT_A+OUT_C);}

プログラムを作った当初はこのようなプログラムだったのだが、例えば、センサー1がライン上にあるときモーターAを逆回転し曲がるはずなのだが、センサー3が反応しているしていないに関わらずモーターAを正回転させているので、打ち消し合ってしまいうまくいかなかった。当然逆にモーターCについても言える。そこで、センサ−1のプログラムのelse内からはOUT_Cを、センサー3の方からはOUT_Aを削除することによって解決した。

 

●バンパーで障害物を避けなければいけないことを知らなかったので、急遽作らなければならなかった。

短時間で本体、プログラム共に作り直さなければならなかった。

 

●ワールドカップ、バイト、テスト等で体がボロボロだった。(ソウマ)

不可抗力です(笑)

プログラム

task main()
{
 SetSensor(SENSOR_1,SENSOR_LIGHT);  //センサーを定義
 SetSensor(SENSOR_2,SENSOR_TOUCH);
 SetSensor(SENSOR_3,SENSOR_LIGHT);
 
 while(true)
 {
  if(SENSOR_1>40){OnFwd(OUT_C);OnRev(OUT_A);}   //通常時直進 ラインにあたると進行方向をかえる
  else{OnFwd(OUT_A);}
  
  if(SENSOR_3>40){OnFwd(OUT_A);OnRev(OUT_C);}   //通常時直進 ラインにあたると進行方向をかえる
  else{OnFwd(OUT_C);}
  
  until(SENSOR_2 == 1);              //タッチセンサーにあたると反転する
  OnRev(OUT_A+OUT_C);Wait(100);
  OnRev(OUT_A);OnFwd(OUT_C);Wait(195);
  
  }
}

コメント

一言お願いします。



添付ファイル: fileImage0026.jpg 285件 [詳細] file名称未設定.jpg 157件 [詳細] filehs.jpg 154件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-07-07 (金) 16:21:54