製作途中のプログラムや改良前のプログラム等
作成日: 2006/06/06 ==================== #define THRESHOLD 40 //閾値を定義 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); //センサ1が光センサであることを宣言 SetSensor(SENSOR_2,SENSOR_TOUCH); //センサ2がタッチセンサであることを宣言 SetSensor(SENSOR_3,SENSOR_LIGHT); //センサ3が光センサであることを宣言 Wait(100); //すぐに動き出さないように待機 while(true) //以下無限ループ { if((SENSOR_1<THRESHOLD)&&(SENSOR_3<THRESHOLD)) //センサ1,3共に黒線を認識した場合 { //直進する OnFwd(OUT_A+OUT_C); } if((SENSOR_1>=THRESHOLD)&&(SENSOR_3<THRESHOLD)) //センサ3のみが黒線を認識した場合 { //右モータのみを正回転 Off(OUT_C); OnFwd(OUT_A); } if((SENSOR_1<THRESHOLD)&&(SENSOR_3>=THRESHOLD)) //センサ1のみが黒線を認識した場合 { //左モータのみを正回転 Off(OUT_A); OnFwd(OUT_C); } if(SENSOR_2==1) //センサ2が押されたら、0.5秒後退し、その後1.8秒回転して方向転換 { OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_C); Wait(180); } } }
作成日:2006/06/07 ==================== #define THRESHOLD 40 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); //センサ1が光センサであることを宣言 SetSensor(SENSOR_2,SENSOR_TOUCH); //センサ2がタッチセンサであることを宣言 SetSensor(SENSOR_3,SENSOR_LIGHT); //センサ3が光センサであることを宣言 Wait(100); //すぐに動き出さないように待機 while(true) //以下無限ループ { if((SENSOR_1<THRESHOLD)&&(SENSOR_3<THRESHOLD)) //センサ1,3共に黒線を認識した場合 { //直進する OnFwd(OUT_A+OUT_C); } if((SENSOR_1>=THRESHOLD)&&(SENSOR_3<THRESHOLD)) //センサ3のみが黒線を認識した場合 { //右モータのみを正回転 Off(OUT_C); OnFwd(OUT_A); } if((SENSOR_1<THRESHOLD)&&(SENSOR_3>=THRESHOLD)) //センサ1のみが黒線を認識した場合 { //左モータのみを正回転 Off(OUT_A); OnFwd(OUT_C); } if(SENSOR_2==1) //センサ2が押されたら、右に移動し前方のロボットを避ける { Off(OUT_A+OUT_C); OnRev(OUT_A); Wait(150); OnFwd(OUT_A+OUT_C); Wait(150); Off(OUT_C); Wait(150); OnFwd(OUT_C); Wait(150); Off(OUT_C); Wait(150); OnFwd(OUT_C); } } }
作成日 2006/06/30 ================== #define TURN 300 //1回転にかかる時間を定義 task main() { int lmax=0,tmax=0; //整数型変数lmax,tmaxを宣言し0を代入 SetSensor(SENSOR_1,SENSOR_LIGHT); //センサ1が光センサであることを宣言 SetSensor(SENSOR_3,SENSOR_LIGHT); //センサ3が光センサであることを宣言 Wait(100); //すぐに動き出さないように待機 while(true) //以下無限ループ { lmax=SENSOR_1; //lmaxにセンサ1の値を代入 OnFwd(OUT_A);OnRev(OUT_C); //回転開始 ClearTimer(0); //タイマ0をクリア while(FastTimer(0)<=TURN) //1回転する { if(lmax<SENSOR_1) { //センサ1の値がlmaxより大きいなら lmax=SENSOR_1; //lmaxにセンサ1の値を代入し, tmax=FastTimer(0); //tmaxにタイマ0の値を代入 } } Off(OUT_A+OUT_C); //回転停止 OnFwd(OUT_C);OnRev(OUT_A); Wait(TURN-tmax); //(TURN-tmax)*10^-2 秒間逆回転 Off(OUT_A+OUT_C); Wait(20); while((SENSOR_1>=(lmax-20))||(SENSOR_3>=(lmax-20))) //センサ1,センサ3の値がlmax-20以上の間光を追いかける { if(SENSOR_1==SENSOR_3) //センサ1とセンサ3の値が等しければ直進 {OnFwd(OUT_A+OUT_C);} if(SENSOR_1<SENSOR_3) //センサ1の値がセンサ3より小さければ左へ {Off(OUT_C);OnFwd(OUT_A);} if(SENSOR_1>SENSOR_3) //センサ1の値がセンサ3より大きければ右へ {Off(OUT_A);OnFwd(OUT_C);} } Off(OUT_A+OUT_C); } }