[[2014a/Member]]

目次

#contents

* 課題の説明 [#mffb653f]

詳しい説明は[[2014a/Mission1]]を参照

写真の入れかた例え:&ref(2014a/Member/mame/Mission1/sample2-small.jpg.30%);



* メンバー [#j0ee8e63]

mame

dai

* ロボット本体 [#g0b2bc6e]

** ライトセンサー [#jf97ef47]

** ドライブベース [#ta82ecff]

** アーム [#qa948bf2]

* 課題 [#ff560aa8]

* プログラム [#w9871f04]

** プログラムの概要 [#v140454d]

#define THRESHOLD 37 //しきい値   
 #define THRESHOLD 37 //しきい値   
#define SPEED_H 25   //最も早い速度
#define SPEED_L 20   //最も遅い速度
#define OnRL(speedR,speedL);OnFwd(OUT_B,speedR);OnFwd(OUT_C,speedL); //右・左車輪のスピード
#define go_forward OnRL(SPEED_H, SPEED_H);   //前進のスピード
#define turn_left1 OnRL(SPEED_L, -SPEED_L); //左旋回
#define turn_left0 OnRL(SPEED_L, 0); //左に曲がる
#define turn_right0 OnRL(0, SPEED_L); //右旋回
#define turn_right1 OnRL(-SPEED_L,SPEED_L); //右に曲がる
#define STEP 1 //白と黒の境界をセンサが読む時間(1/1000秒)
#define nMAX 300 //通常のカーブとして許容できる繰り返しの最大値
#define short_break Off(OUT_BC); Wait(1000); //小休止
#define CROSS_TIME 100 //交差点通過にかかる時間
#define cross_line OnRL(SPEED_L,SPEED_L);Wait(CROSS_TIME);short_break; //交差点を渡る

task main() 
{ 
  SetSensorLight(S1); //光センサーをセット 
  SetSensorLowspeed(S4); //超音波センサーをセット 
  int nOnline=0; //黒い線になった回数  
  int nCrossline=0; //交差点を渡った回数

 while (true) {
    
   go_Fwd(OUT_BC);  //黒線になるまで前進
  until(SENSOR_1 = 1);
  
   while (nOnline < nMAX) { //黒の認識が最大値より小さい間
    
   if(SensorUS(S4) <= 8) { //8cm以内に障害物があった場合下記2行を実行する
       OnFwd(OUT_A,70);Wait(500);Off(OUT_A); //
  Wait(2000); //アームを前方向に2秒回転(ボールをつかむ)
    }
   if(nCrossline >= 5) { //交差点を5回通過した場合
      OnRev(OUT_A,100);Wait(1000);Off(OUT_A);
     break; //アームを後方向に1秒回転(ボールを放つ)
    }

    if (SENSOR_1 < THRESHOLD -11)  { //白の場合
      turn_left1; //左に旋回
      nCrossline++; //交差点を渡る回数を増やす
    }  else {
      if (SENSOR_1 < THRESHOLD-5) { //やや白の場合 
       turn_left0; //左に曲がる
    }  else if (SENSOR_1 < THRESHOLD+5) { //やや黒の場合
       go_forward; //直進
    }  else if (SENSOR_1 < THRESHOLD +11) { //黒の場合
       turn_right0; //右に曲がる
    }  else {
       turn_right1; //右に旋回
     }
    nOnline=0; //カウントをリセットする
     }
   Wait(STEP); //(1/1000秒待機)
   }
   short_break; //小休止
   turn_right1; Wait(nMAX*STEP); //進行方向修正
   cross_line; //交差点を渡る
   nOnline=0; //カウントをリセットする
  }
}

** 反省と感想 [#a4021e1b]

難しかった。しきい値が安定しなかった。

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS