task main() { OnFwd(OUT_A+OUT_C); //前進 Wait200; Off(OUT_A+OUT_C); //停止 OnFwd(OUT_A);OnRev(OUT_C); //旋回 Wait45; OnFwd(OUT_A+OUT_C); //前進 Wait200; Off(OUT_A+OUT_C); //停止 OnFwd(OUT_A);OnRev(OUT_C); //旋回 Wait45; OnFwd(OUT_A+OUT_C); //前進 Wait200; Off(OUT_A+OUT_C); //停止 OnFwd(OUT_A);OnRev(OUT_C); //旋回 Wait45; OnFwd(OUT_A+OUT_C); //前進 Wait200; Off(OUT_A+OUT_C); //停止
#define TURN_TIME 45 #define go_straight(int t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); #define turn OnFwd(OUT_A);OnRev(OUT_C);Wait(TURN_TIME);Off(OUT_A+OUT_C); task main() { repeat(3) //3回繰り返す { go_straight(200); //2秒間前進 turn; //旋回 } go_straight(200); //2秒間前進 }
作成:坂本達也
task main() { SetSensor(SENSOR_1,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_TOUCH); While(true) //この後の動作を延々繰り返す {OnFwd(0UT_A+OUT_C); until((SENSOR_1==1)||(SENSOR_3==1)); //両方のセンサーが壁に当たったら Off(OUT_A+OUT_C); //停止 Rev(OUT_A+OUT_C); //後退 Wait(100); Fwd(OUT_A)+Rev(OUT_C); //反転した後、前進(最初のプログラムに戻る) Wait(360);} }
#define THRESHOLD 40 //センサーの閾値を設定 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); while(true) { If((SENSOR_1> THRESHOLD)&&(SENSOR_3> THRESHOLD)) //両方のセンサーが白紙の上にある状態ならば前進 { OnFwd(OUT_A+OUT_C); } If(SENSOR_1< THRESHOLD) //センサー1が黒線上にある状態 { OnFwd(OUT_C); //センサー1が白紙の上に戻るまで左旋回 until(SENSOR_1> THRESHOLD); } If(SENSOR_3< THRESHOLD) //センサー3が黒線上にある状態 { OnFwd(OUT_A); //センサー3が白紙の上に戻るまで右旋回 until(SENSOR_3> THRESHOLD); } } }
int light_max=0,time_max=0; //light_max,time_maxという変数を定義し、その値に0を代入 #define TURN_TIME 360 //一周回転する時間を定義 #define TURN_RIGHT OnFwd(OUT_A);OnRev(OUT_C); //右回転動作を定義 #define TURN_LEFT OnRev(OUT_A);OnFwd(OUT_C); //左回転を定義 #define STOP Off(OUT_A+OUT_C); //停止動作を定義 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); ClearTimer(0); //タイマーリセット while(FastTimer(0)<TURN_TIME) //タイマーの値がTURN-TIMEより大きくなるまで動作を繰り返す { TURN_RIGHT; if(SENSOR_1>light_max) //光を見つけた(=センサー1の値が最大となった) { light_max=SENSOR_1; //光を受けたセンサー1の値をlight_maxの値に代入 time_max=FastTimer(0); //光を見つけるまでの時間をtime_maxの値に代入 } } STOP; Wait(50); //0.5秒停止 TURN_LEFT; //左に回転 Wait(TURN_TIME-time_max); //光を見つけるまでの時間だけ回転 STOP; //停止 while(true) { if(SENSOR_1!=light_max) //センサー1の値がlight_maxの値と異なる { TURN_RIGHT; //センサー1がlight_maxの値になるまで右に回転 until(SENSOR_1==light_max); } } }