アクセス数:今日1 総数&counter([total|today|yesterday]); 最終更新日:2006-02-02 (木) 17:46:46
作成者:Hypodytes rubripinnis
#define go_straight OnFwd(OUT_A+OUT_C); //直進 #define turn_right OnFwd(OUT_A);OnRev(OUT_C); //右旋回 #define turn_left OnFwd(OUT_C);OnRev(OUT_A); //左旋回 #define minous 35 //minousを定義 int max; //maxを定義 int time; //timeを定義 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1:光センサー SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3:光センサー max=SENSOR_1; //センサー1をmaxに指定 time=Timer(0); //タイマー0をtimeに指定 ClearTimer(0); //タイマー0をリセット while(Timer(0)<=14) //タイマー0が14以下なら { turn_right //右旋回 if(SENSOR_1>max) //センサー0が最大値なら { ClearTimer(1); //タイマー1をリセット max=SENSOR_1; //センサー1をmaxに指定 } else //そうでないなら { max=max; //maxはそのまま time=Timer(1); //timeをタイマー1に指定 } } ClearTimer(1); //タイマー1をリセット while(Timer(1)<=time) //タイマー1がtime以下なら {turn_left} //左旋回 while(true) { if((SENSOR_1>=max-minous)==(SENSOR_3>=max-minous)) //センサー1,3の値が最大値の付近で、ほぼ同値なら {go_straight} //直進 if(SENSOR_1<(max-minous)) //センサー1の値が最大値-minous未満なら { turn_right // 右旋回 until(SENSOR_1>=(max-minous)); //センサー1の値が最大値-minous以上まで } if(SENSOR_3<(max-minous)) //センサー3の値が最大値-minous未満なら { turn_left //左旋回 until(SENSOR_3>=(max-minous)); //センサー3の値が最大値-minous以上まで } } }
仕組み&工夫したところ