[[2013b/Member]] *ロボットの紹介 [#e76e8d8f] ・光センサーを車体に近づけることで。より正確に線を追うことができるようにした。 ・タッチセンサーの前にバンパーを取り付けることで、タッチセンサーの反応をよくした。 ・ロボットが安定して動けるように、ロボットの説明書を参考にした。 *コースの攻略 [#sc7bc5e5] カウンターを使う方法ではカーブ前の交差点、曲がり方の急なカーブが曲がれないのでタイマーを使うことで交差点、急カーブを克服した。 急カーブのところでは光センサーによってモーターを早く動かし、ロボットがしっかりと曲がりきれるようにした。 交差点の近くではロボットが旋回する速さを遅くして交差点のラインを渡り切るようにした。 急カーブ、緩いカーブ、直線、交差点で時間を区切りコースを攻略した。 *プログラム [#q1452173] #define THRESHOLD 42 #define hp 7 #define lp 2 #define set_power_h SetPower(OUT_AC,hp); #define set_power_l SetPower(OUT_AC,lp); #define set_power_1 SetPower(OUT_AC,1); #define g_f set_power_h;OnFwd(OUT_AC); #define t_l1 set_power_l;OnFwd(OUT_C);OnRev(OUT_A); #define t_l0 set_power_l;OnFwd(OUT_C);Off(OUT_A); #define t_r1 set_power_l;OnFwd(OUT_A);OnRev(OUT_C); #define t_r0 set_power_l;OnFwd(OUT_A);Off(OUT_C); #define t_r3 set_power_1;OnFwd(OUT_A);Off(OUT_C); #define t_r4 set_power_l;OnRev(OUT_C);Off(OUT_C); #define STEP 1 #define n1max 2 #define n2max 2 #define gs(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC); #define g_s OnFwd(OUT_AC); #define tl(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);\ Off(OUT_AC); #define tr(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);\ Off(OUT_AC); #define t_l OnFwd(OUT_C);OnRev(OUT_A); #define t_r OnFwd(OUT_A);OnRev(OUT_C); #define rev(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC); #define black 38 #define white 51 #define time0 700 #define time1 200 #define time2 650 #define time3 450 #define time4 500 #define time5 400 #define time6 900 task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); ClearTimer(0); PlaySound(SOUND_CLICK); while(FastTimer(0)<=time0){ if (SENSOR_2<THRESHOLD-2){ t_r1; }else if(SENSOR_2<THRESHOLD+1){ t_r0; }else if(SENSOR_2<THRESHOLD+7){ g_f; }else if(SENSOR_2<THRESHOLD+10){ t_l0; }else{ t_l1; } } PlaySound(SOUND_CLICK); ClearTimer(0); while(FastTimer(0)<=time1){ if(SENSOR_2<THRESHOLD+1){ t_r0; }else if(SENSOR_2<THRESHOLD+7){ g_f; }else { t_l0; } } PlaySound(SOUND_CLICK); ClearTimer(0); while(FastTimer(0)<=time2){ if (SENSOR_2<THRESHOLD-2){ t_r4; }else if(SENSOR_2<THRESHOLD+1){ t_r1; }else if(SENSOR_2<THRESHOLD+7){ g_f; }else if(SENSOR_2<THRESHOLD+10){ t_l0; }else{ t_l1; } } PlaySound(SOUND_CLICK); ClearTimer(0); while(FastTimer(0)<=time3){ if(SENSOR_2<THRESHOLD+1){ t_r0; }else if(SENSOR_2<THRESHOLD+7){ g_f; }else { t_l0; } } PlaySound(SOUND_CLICK); ClearTimer(0); while(FastTimer(0)<=time4){ if (SENSOR_2<THRESHOLD-2){ t_r1; }else if(SENSOR_2<THRESHOLD+1){ t_r0; }else if(SENSOR_2<THRESHOLD+7){ g_f; }else if(SENSOR_2<THRESHOLD+13){ t_l0; }else{ t_l1; } } PlaySound(SOUND_CLICK); ClearTimer(0); while(FastTimer(0)<=time5){ if(SENSOR_2<THRESHOLD+7){ g_f; }else { t_l0; } } PlaySound(SOUND_CLICK); ClearTimer(0); while(FastTimer(0)<=time6){ if (SENSOR_2<THRESHOLD-2){ t_r1; }else if(SENSOR_2<THRESHOLD+1){ t_r0; }else if(SENSOR_2<THRESHOLD+7){ g_f; }else if(SENSOR_2<THRESHOLD+13){ t_l0; }else{ t_l1; } } Off(OUT_AC); }