両側に置いてある3個の箱を木材の上を越えて入れ換える。
#define go_back OnFwd(OUT_AC); // 後進 #define lift_up OnFwd(OUT_B); //アームを閉じる #define lift_down OnRev(OUT_B); //アームを開く #define THRESHOLD 45 // しきい値 #define go_forward OnRev(OUT_AC); // 直進 #define turn_left1 OnFwd(OUT_A);OnRev(OUT_C); // 左旋回 #define turn_left0 OnFwd(OUT_A);Off(OUT_C); // 左折 #define turn_right1 OnFwd(OUT_C);OnRev(OUT_A); // 右旋回 #define turn_right0 OnFwd(OUT_C);Off(OUT_A); // 右折 #define STAY_BACK_TIME 120 // 持ち上げる際に一度退く時間 #define APPROACH_TIME 60 // 箱に近づく時間 #define OPEN_TIME 30 // アームを完全に開閉する時間 #define KEEP_TIME 80 // 箱を完全につまむまでの時間 #define QUARTER_TURN_TIME 120 // 半回転 task main() { ClearTimer(0); SetPower(OUT_B, 7); SetSensor(SENSOR_2, SENSOR_TOUCH); until(SENSOR_2) //------------------------// { //箱にバンパーが当たるまで後進して、 OnFwd(OUT_AC); //当たったら少し前進 } //------------------------------// Off(OUT_AC); OnRev(OUT_AC); Wait(STAY_BACK_TIME); SetPower(OUT_AC, 5); // turn_left1; //半回転 Wait(QUARTER_TURN_TIME); // Off(OUT_AC); lift_down; //---------------------------// Wait(100); //アームを開き箱まで前進 Off(OUT_B); // go_forward; // Wait(280); //---------------------------// Off(OUT_AC); lift_up; //箱を持ち上げる Wait(550); Off(OUT_B); int timer = 0; //続けて黒になった回数 while(true){ // 黒い時 if (SENSOR_3 < THRESHOLD -4){ ClearTimer(0); while(SENSOR_3 < THRESHOLD -4){ turn_right1; } timer = FastTimer(0); //タイマーリセット // 灰色の時 } else if (SENSOR_3 < THRESHOLD +8){ go_back; // 白い時 } else { turn_left1; } if(SENSOR_2==1){ //---------------------------// go_forward; //木材にバンパーが当たったら、少し前進 Wait(50); //して木材にアームが向くように半周旋回 Off(OUT_AC); //する turn_left1; // Wait(100); //---------------------------// Off(OUT_AC); } if (timer >= 50) { //0.5秒以上黒が続いたら //------------------------------------// PlayTone(440, 30); //木材にバンパーが当たらなかったら、直角 timer = 0; //を判断して木材にアームが向くように旋回 kado++; //直角の回数をカウント //する // if (kado == 1) { //1つ目の直角にきたら // turn_left1; //----------------------------// Wait(35); go_back; Wait(30); timer = 0; break; } } } lift_up; //----------------------------// Wait(200); //アームを上げながら木材にギリギリまで go_forward; //近づき箱を下ろす Wait(50); //----------------------------// lift_down; Wait(300); }
プログラムが途中までしかできなくて、先生の「本体と同じ位の時間をかけてプログラムを作れ」と言う言葉がよくわかった。4人チームなのに、1人の人に頼り切っていたのでチームで分担したらもっと時間が作れたんじゃないかと感じました。