[[2017a/Member]] #contents *課題について [#i4ad9c50] 決められたレールの上をライントレースして走るロボットの作成である。光センサーを利用してレールの閾値を読み取りながら進む。 #define TM 18 #define TR1 OnFwd(OUT_A);OnRev(OUT_C); #define TR0 OnFwd(OUT_A);Off(OUT_C); #define TL0 OnFwd(OUT_C);Off(OUT_A); #define TL1 OnFwd(OUT_C);OnRev(OUT_A); #define stop(t) Off(OUT_AC);Wait(t); #define sound_up PlaySound(SOUND_UP); #define line_trase while(FastTimer(0)<tmax){if(SENSOR_2 >senter +13){TR1;ClearTimer(0);}else if(SENSOR_2 >senter +7){TL0;ClearTimer(0);}\ else if(SENSOR_2 >senter +0){OnFwd(OUT_AC);ClearTimer(0);}else if(SENSOR_2 >senter -2){TL; ClearTimer(0);}\ else{SetPower(OUT_C,0);TL1;}if(FastTimer(0)>tmax){ClearTimer(0);}}n++;SetPower(OUT_C,7); #define line_trase_curve while(FastTimer(0)<tmid){if(SENSOR_2 >senter +13){TR1;ClearTimer(0);}else if(SENSOR_2 >senter +7){right;ClearTimer(0);}\ else if(SENSOR_2 >senter +0){OnFwd(OUT_AC);ClearTimer(0);}else if(SENSOR_2 >senter -1){left; ClearTimer(0);}\ else{TL1;}if(FastTimer(0)>tmid){ClearTimer(0);}}n++; sub line_A() { ClearTimer(0); line_trase; if((n==1)||(n==4)||(n==5)||(n==11)){ sound_up; } Off(OUT_AC); } sub line_B() { ClearTimer(0); line_trase_curve; if((n==2)||(n==9)||(n==12)){ sound_up; stop(100); } Off(OUT_AC); } sub line_C() { ClearTimer(0); line_trase; if((n==7)||(n==8)){ sound_up; stop(100); TR1;Wait(45); OnFwd(OUT_AC);Wait(20); } Off(OUT_AC); } sub line_D() { ClearTimer(0); line_trase_curve; if(n==6){ sound_up; } Off(OUT_AC); } sub line_E() { ClearTimer(0); line_trase; if(n==13){ sound_up; } Off(OUT_AC); } task main() { SetSensor(SENSOR_2, SENSOR_LIGHT); line_A(); line_B(); line_C(); line_A(); line_A(); line_A(); line_D(); line_D(); line_B(); line_C(); line_A(); line_B(); line_E(); }