アーム

#define ARM_TIME 25         //アームを開閉する時間を設定します。
#define UP_TIME 25       //アームを上下させる時間を設定します。
task main(){

SetSensor(SENSOR_1,SENSOR_TOUCH);
SetSensor(SENSOR_2,SENSOR_TOUCH);       //タッチセンサーを設定します。
while(true){
  ClearMessage();
 if((SENSOR_1==1)&&(SENSOR_2==1))       //センサー1と2が両方反応したとき、2のメッセージを送り、つかみます。
  {SendMessage(2);
   OnFwd(OUT_A); Wait(ARM_TIME); 
   OnFwd(OUT_B); Wait(UP_TIME);Off(OUT_A+OUT_B);}
 if( (SENSOR_1==1))       //センサー1が反応したとき、1のメッセージを送り、つかみます。
  {SendMessage(1);
   OnFwd(OUT_A); Wait(ARM_TIME); 
   OnFwd(OUT_B); Wait(UP_TIME);Off(OUT_A+OUT_B);}
 if(Message()==3){OnRev(OUT_B); Wait(25);       //3のメッセージを受け取ったとき、アームを下ろし、つかんでいたものを離します。 
OnRev(OUT_A); Wait(30);Off(OUT_A+OUT_B);}
 }
}

足回り

#define line_1  while ( Timer(2) <= 60 ) {  if(SENSOR_1<40){OnFwd(OUT_A);OnRev(OUT_C);  Wait(5);}if(SENSOR_2<40){OnFwd(OUT_C);OnRev(OUT_A);Wait(5);}else{OnFwd(OUT_A+OUT_C);}  }        //ライントレースを0.6秒します。 
#define line_2  while ( Timer(2) <= 20 ) {  if(SENSOR_1<40){OnFwd(OUT_A);OnRev(OUT_C);  Wait(5);}if(SENSOR_2<40){OnFwd(OUT_C);OnRev(OUT_A);Wait(5);}else{OnFwd(OUT_A+OUT_C);}  }        //ライントレースを0.2秒します。
#define line_3  while ( Timer(0) <= 80 ) {  if(SENSOR_1<40){OnFwd(OUT_A);OnRev(OUT_C);  Wait(5);}if(SENSOR_2<40){OnFwd(OUT_C);OnRev(OUT_A);Wait(5);}else{OnFwd(OUT_A+OUT_C);}  }               //ライントレースを0.8秒します。
int turn_time;       //変数turn_timeを設定します。
task main()
{
 SetSensor(SENSOR_1,SENSOR_LIGHT);
 SetSensor(SENSOR_2,SENSOR_LIGHT);
 SetSensor(SENSOR_3,SENSOR_LIGHT);        //光センサーを設定します。
 turn_time=10;       //turn_timeを10とおきます。
while(true){
  ClearMessage();
  ClearTimer(0);
  ClearTimer(1);
  ClearTimer(2);
 OnFwd(OUT_A+OUT_C); Wait(30);        //前進します。
 if(Message()==1) {       //1のメッセージを受け取ったとき。
   Off(OUT_A+OUT_C); Wait(60); 
  OnRev(OUT_A+OUT_C);  Wait(15);
   OnFwd(OUT_C); OnRev(OUT_A); Wait(80);       //後退し、左に曲がってライントレースを開始します。
  OnFwd(OUT_A+OUT_C); Wait(10);
   line_1; OnFwd(OUT_A+OUT_C); 
   if(SENSOR_3<40){       //センサー3が40以下のとき。
  OnFwd(OUT_C); OnRev(OUT_A); Wait(30);}       //左に曲がります。
   line_2; SendMessage(3);        //ライントレースをして、3のメッセージを送ります。       
   Float(OUT_A+OUT_C); Wait(60); 
  OnRev(OUT_A+OUT_C);  Wait(20);
   OnFwd(OUT_A); OnRev(OUT_C); Wait(40);
   line_3;}       //停止後、ライントレースを行い、元の位置まで戻ります。
 if(Message()==2) {       //2のメッセージを受け取ったとき。
   Off(OUT_A+OUT_C); Wait(60); 
  OnRev(OUT_A+OUT_C); Wait(15);
   OnFwd(OUT_A); OnRev(OUT_C); Wait(80);        //後退し、右に曲がってライントレースを開始します。
  OnFwd(OUT_A+OUT_C); Wait(10);
   line_1; OnFwd(OUT_A+OUT_C); 
  if(SENSOR_3<40){       //センサー3が40以下のとき。
  OnFwd(OUT_A); OnRev(OUT_C); Wait(30);}       //右に曲がります。
   line_2; SendMessage(3);        //ライントレースをして、3のメッセージを送ります。      
 Float(OUT_A+OUT_C); Wait(60);
 OnRev(OUT_A+OUT_C); Wait(20);                     
  OnFwd(OUT_C); OnRev(OUT_A); Wait(40);
 line_3;}       //停止後、ライントレースを行い、元の位置まで戻ります。
 else{while(Message()!=0){        //その他のときはメッセージが送られてくるまで繰り返します。
 OnFwd(OUT_A+OUT_C); Wait(35);         //前進し、後退します。
  OnRev(OUT_A+OUT_C); Wait(30);
   OnFwd(OUT_A); OnRev(OUT_C); Wait(turn_time);  //右にturn_timeだけ曲がりturn_timeに5加算します。
   turn_time =turn_time+5;
   OnFwd(OUT_A+OUT_C); Wait(35);         //前進し、後退します。
  OnRev(OUT_A+OUT_C); Wait(30);
   OnFwd(OUT_C); OnRev(OUT_A); Wait(turn_time);
   turn_time =turn_time+5;}       //左にturn_timeだけ曲がりturn_timeに5加算します。
    }
  }
 }

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