アーム

 #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を設定します。
 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とおきます。
  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のメッセージを受け取ったとき。
  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_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のメッセージを送ります。       
    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のメッセージを受け取ったとき。
    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); 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のメッセージを送ります。      
   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);         前進し、後退します。
  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加算します。
    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);         前進し、後退します。
    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加算します。
    turn_time =turn_time+5;}       //左にturn_timeだけ曲がりturn_timeに5加算します。
     }
   }
  }

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS