アーム #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加算します。 } } }