int kaiten=0; int tmax=0; int T=420; #define THRESHOLD 40
task line_trace() { while(true) { if(SENSOR_2<THRESHOLD) {OnFwd(OUT_A); Float(OUT_C);} else{Float(OUT_A); OnFwd(OUT_C);} } }
1.センサーをセットする
task main() { SetSensor(SENSOR_3,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_LIGHT); SetSensor(SENSOR_1,SENSOR_TOUCH);
2.テニスボールが三個あるので作業を三回やったら終えるようにする
int i; int i_min=1,i_max=3; for(i=i_min; i<=i_max; i++) {
3.作業開始
OnFwd(OUT_A+OUT_C); start line_trace;
4.タッチセンサーが反応したら、停止しアームを閉じる
until(SENSOR_1 == 1); { stop line_trace; Off(OUT_A+OUT_C); OnRev(OUT_B); Wait(200); Off(OUT_B);
5.一番明るい方向を探知し、どれだけの時間逆回転するか決める
ClearTimer(0); while(FastTimer(0)<T) { OnFwd(OUT_A); OnRev(OUT_C); if(SENSOR_3>kaiten) //運搬する {kaiten=SENSOR_3; tmax=FastTimer(0);} }
6.5で決めた時間逆回転する
OnRev(OUT_A); OnFwd(OUT_C); Wait(440-tmax); OnFwd(OUT_A);
7.ランタンにある程度近づくまで接近する
until(SENSOR_3>60); { OnFwd(OUT_A+OUT_C); Wait(30); Off(OUT_A+OUT_C);
8.ランタン付近でテニスボールを離し、回転しもとの場所へ戻る
OnFwd(OUT_B); Wait(100); Off(OUT_B); OnRev(OUT_A+OUT_C); Wait(100); OnFwd(OUT_C); Wait(200); OnFwd(OUT_A);
9.作業終了
} } } }