²¼¤Î¿Þ¤Î¤è¤¦¤Ê¥³¡¼¥¹¤ò³Æ¥Á¡¼¥à¤ÇºîÀ®¤·¡¢¡Ö¥ß¥Ã¥·¥ç¥ó¡×¤ò¿ë¹Ô¤¹¤ë¤¿¤á¤Î¥í¥Ü¥Ã¥È¤òºîÀ®¤»¤è¡£
AÃÏÅÀ¤«¤é½Ðȯ ¢ª M ¢ª K(ľ¿Ê) ¢ª L(¥Ô¥ó¥Ý¥ó¶Ì¤ò¤Ä¤«¤à) ¢ª K(±¦ÀÞ) ¢ª J(°ì»þÄä»ß¤Î¸å¡¢º¸ÀÞ) ¢ª I(ľ¿Ê) ¢ª H(ľ¿Ê) ¢ª G(º¸ÀÞ) ¢ª F ¢ª E ¢ª D(°ì»þÄä»ß¤Î¸å¡¢Ä¾¿Ê) ¢ª C(ľ¿Ê) ¢ª B(°ì»þÄä»ß) ¢ª ¥·¥å¡¼¥È¢ª AÃÏÅÀ¤ËÆþ¤ë(¥´¡¼¥ë)
»ä¤Ï¾åµ¤Î¥³¡¼¥¹¤Ç¥í¥Ü¥Ã¥È¤òÆ°¤«¤·¤Ê¤¬¤é¡¤¥Ô¥ó¥Ý¥ó¶Ì¤ò²ó¼ý¤·¡¢¤½¤ì¤ò¥´¡¼¥ë¤Þ¤Ç±¿¤Ó¤Þ¤·¤¿¡£
¥í¥Ü¥Ã¥È¤òºî¤ë¾å¤Ç¤³µ¤¤òÉÕ¤±¤¿¤³¤È¤Ï¾®²ó¤ê¤¬Íø¤¯¤È¤¤¤¦ÅÀ¤Ç¤¹¡¥ ¥í¥Ü¥Ã¥È¤¬Â礤¯¤Ê¤ê¤¹¤®¤Æ¸÷¥»¥ó¥µ¡¼¤È¥¿¥¤¥ä¤Îµ÷Î¥¤¬Î¥¤ì¤¹¤®¤Æ¤·¤Þ¤Ã¤¿¤é¼´¤¬¤Ö¤ì¤Æ¤·¤Þ¤¤¥×¥í¥°¥é¥à¤¬ÁÛÄꤷ¤Æ¤¤¤¿¤è¤¦¤ËÆ°¤«¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡¥ ¤Þ¤¿¡¤»ä¤¿¤Á¤Ï¥Ô¥ó¥Ý¥ó¶Ì¤ò±¿¤Ö¤¿¤á¤ÎÊýË¡¤È¤·¤Æ¥¢¡¼¥à¤ò¼è¤êÆþ¤ì¤Þ¤·¤¿¡¥ ¥¢¡¼¥à¤ò¾å¤²²¼¤²¤¹¤ë¤³¤È¤Ç¥Ô¥ó¥Ý¥ó¶Ì¤ò°ÜÆ°¤µ¤»¤ë¤Î¤ËÀ®¸ù¤·¤Þ¤·¤¿¡¥
Á´ÂÎÁü¤Ï°Ê²¼¤Î¼Ì¿¿¤ÎÄ̤ê¤Ç¤¹¡¥
²¿²ó¤âƱ¤¸¥×¥í¥°¥é¥à¤ò½ñ¤¯¤³¤È¤Ï̵Â̤Ǥ¢¤ë¤¿¤áÄêµÁ¤·¤Þ¤·¤¿¡¥
#define black 30 #define white 50 #define speedH 30 #define speedL 10 #define mae OnFwd(OUT_BC,speedH);//ľ¿Ê #define turnRRR OnFwd(OUT_C,speedH);OnRev(OUT_B,speedH);//Èù¡¹±¦Àû²ó #define turnLLL OnFwd(OUT_B,speedH);OnRev(OUT_C,speedH);//Èù¡¹º¸Àû²ó #define turnRR OnFwd(OUT_C,speedH);Off(OUT_B);//Èù±¦Àû²ó #define turnLL OnFwd(OUT_B,speedH);Off(OUT_C);//Èùº¸Àû²ó #define turnR OnFwd(OUT_C,speedH);OnFwd(OUT_B,speedL);//±¦Àû²ó #define turnL OnFwd(OUT_B,speedH);OnFwd(OUT_C,speedL);//º¸Àû²ó #define step 1 #define jikan 100 #define teishi Off(OUT_BC);Wait(300)
¥é¥¤¥ó¥È¥ì¡¼¥¹¤ä¸òº¹ÅÀ¤Ç»ß¤Þ¤Ã¤¿¸å¤Ëľ¿Ê¤¹¤ë¤¿¤á¤Î¥×¥í¥°¥é¥à¤Ê¤É¤Ï¾å¤Î¤è¤¦¤ËÄêµÁ¤Ç¤¤Ê¤¤¤¿¤á¥µ¥Ö¥ë¡¼¥Á¥ó¤È¤·¤ÆÄêµÁ¤·¤Þ¤·¤¿¡¥
¥é¥¤¥ó¥È¥ì¡¼¥¹¤Ï£´¤ÄÍÑ°Õ¤·¤Þ¤·¤¿¡¥¤½¤ì¤Ïľ¿Ê¤¹¤ë¤È¤¤Îº¸Â¦¤Î¥é¥¤¥ó¥È¥ì¡¼¥¹¡¤Ä¾¿Ê¤¹¤ë¤È¤¤Î±¦Â¦¤Î¥é¥¤¥ó¥È¥ì¡¼¥¹¡¤¥«¡¼¥Ö¤òÅϤë»þ¤Îº¸Â¦¤Î¥é¥¤¥ó¥È¥ì¡¼¥¹¡¤¥«¡¼¥Ö¤òÅϤë»þ¤Î±¦Â¦¤Î¥é¥¤¥ó¥È¥ì¡¼¥¹¤Ç¤¹¡¥¤Þ¤¿¤³¤é¤é¤ÏÁ´¤Æ¸òº¹ÅÀ¤Ç»ß¤Þ¤ë¤è¤¦¤ËÀßÄꤷ¤Æ¤¤¤Þ¤¹¡¥
¡¡¤½¤ì¤ò°Ê²¼¤ËºÜ¤»¤Þ¤¹¡¥
¡¡¸òº¹ÅÀ¤Ç»ß¤Þ¤ê¡¤Ä¾¿Ê¤¹¤ë¤È¤¤Îº¸Â¦¤Î¥é¥¤¥ó¥È¥ì¡¼¥¹
¸÷¥»¥ó¥µ¡¼¤¬»ØÄꤷ¤¿»þ´Ö°Ê¾å¡¤¹õ¤È¬Äꤷ¤¿¤é»ß¤Þ¤ë¤è¤¦¤Ë¥×¥í¥°¥é¥à¤µ¤ì¤Æ¤¤¤ë¡¥
¤³¤ì¤¬¸òº¹ÅÀ¤Ç»ß¤Þ¤ë¤Ç»ß¤Þ¤ë¤¿¤á¤Î¥×¥í¥°¥é¥à¤Ç¤¢¤ë¡¥
void linetraceSL()//¸òº¹ÅÀ¤Ç»ß¤Þ¤ë { long t0=0,t_black=0,t_max=jikan; t0=CurrentTick();//t0¤Ï¸½ºß¤Î»þ´Ö while(t_black<t_max){//t_black¤¬t_max¤òĶ¤¨¤ë¤Þ¤Ç³¤±¤ë if(SENSOR_3>white){//¤â¤·¸÷¥»¥ó¥µ¡¼¤ÇÇò¤¬¤¬Â¬Äꤵ¤ì¤ë¤È turnRR; } else if(SENSOR_3>white-5){//¤â¤·¸÷¥»¥ó¥µ¡¼¤ÇÇò-5¤¬Â¬Äꤵ¤ì¤ë¤È turnR; } else if(SENSOR_3>black+5){//¤â¤·¸÷¥»¥ó¥µ¡¼¤Ç¹õ+5¤¬Â¬Äꤵ¤ì¤ë¤È mae; } else if(SENSOR_3>black){//¤â¤·¸÷¥»¥ó¥µ¡¼¤Ç¹õ¤¬Â¬Äꤵ¤ì¤ë¤È turnL; } else{ turnLL; t0=CurrentTick();//t0¤Ï¸½ºß¤Î»þ´Ö until((SENSOR_3<black+5)&&(SENSOR_3>black));//¹õ+5¤«¹õ¤Ë¤Ê¤ë¤Þ¤Ç t_black=CurrentTick()-t0; } Wait(step); } }
¸òº¹ÅÀ¤Ç»ß¤Þ¤ê¡¤Ä¾¿Ê¤¹¤ë¤È¤¤Î±¦Â¦¤Î¥é¥¤¥ó¥È¥ì¡¼¥¹
void linetraceSR()//¸òº¹ÅÀ¤Ç»ß¤Þ¤ë { long t0=0,t_black=0,t_max=jikan;
t0=CurrentTick();//t0¤Ï¸½ºß¤Î»þ´Ö while(t_black<t_max){//t_black¤¬t_max¤òĶ¤¨¤ë¤Þ¤Ç³¤±¤ë if(SENSOR_3>white){//¤â¤·¸÷¥»¥ó¥µ¡¼¤ÇÇò¤¬¤¬Â¬Äꤵ¤ì¤ë¤È turnLL; } else if(SENSOR_3>white-5){//¤â¤·¸÷¥»¥ó¥µ¡¼¤ÇÇò-5¤¬Â¬Äꤵ¤ì¤ë¤È turnL; } else if(SENSOR_3>black+5){//¤â¤·¸÷¥»¥ó¥µ¡¼¤Ç¹õ+5¤¬Â¬Äꤵ¤ì¤ë¤È mae; } else if(SENSOR_3>black){//¤â¤·¸÷¥»¥ó¥µ¡¼¤Ç¹õ¤¬Â¬Äꤵ¤ì¤ë¤È turnR; } else{ turnRR; t0=CurrentTick();//t0¤Ï¸½ºß¤Î»þ´Ö until((SENSOR_3<black+5)&&(SENSOR_3>black));//¹õ+5¤«¹õ¤Ë¤Ê¤ë¤Þ¤Ç t_black=CurrentTick()-t0; } Wait(step); } }
¸òº¹ÅÀ¤Ç»ß¤Þ¤ê¡¤¥«¡¼¥Ö¤òÅϤë»þ¤Îº¸Â¦¤Î¥é¥¤¥ó¥È¥ì¡¼¥¹
void linetraceCL()//¸òº¹ÅÀ¤Ç»ß¤Þ¤ë { long t0=0,t_black=0,t_max=jikan;
t0=CurrentTick();//t0¤Ï¸½ºß¤Î»þ´Ö while(t_black<t_max){//t_black¤¬t_max¤òĶ¤¨¤ë¤Þ¤Ç³¤±¤ë if(SENSOR_3>white){//¤â¤·¸÷¥»¥ó¥µ¡¼¤ÇÇò¤¬¤¬Â¬Äꤵ¤ì¤ë¤È turnRRR; } else if(SENSOR_3>white-5){//¤â¤·¸÷¥»¥ó¥µ¡¼¤ÇÇò-5¤¬Â¬Äꤵ¤ì¤ë¤È turnRR; } else if(SENSOR_3>black+5){//¤â¤·¸÷¥»¥ó¥µ¡¼¤Ç¹õ+5¤¬Â¬Äꤵ¤ì¤ë¤È mae; } else if(SENSOR_3>black){//¤â¤·¸÷¥»¥ó¥µ¡¼¤Ç¹õ¤¬Â¬Äꤵ¤ì¤ë¤È turnLL; } else{ turnLLL; t0=CurrentTick();//t0¤Ï¸½ºß¤Î»þ´Ö until((SENSOR_3<black+5)&&(SENSOR_3>black));//¹õ+5¤«¹õ¤Ë¤Ê¤ë¤Þ¤Ç t_black=CurrentTick()-t0; } Wait(step); } }
¸òº¹ÅÀ¤Ç»ß¤Þ¤ê¡¤¥«¡¼¥Ö¤òÅϤë»þ¤Î±¦Â¦¤Î¥é¥¤¥ó¥È¥ì¡¼¥¹
void linetraceCR()//¸òº¹ÅÀ¤Ç»ß¤Þ¤ë { long t0=0,t_black=0,t_max=jikan;
t0=CurrentTick();//t0¤Ï¸½ºß¤Î»þ´Ö while(t_black<t_max){//t_black¤¬t_max¤òĶ¤¨¤ë¤Þ¤Ç³¤±¤ë if(SENSOR_3>white){ turnLL; } else if(SENSOR_3>white-5){//¤â¤·¸÷¥»¥ó¥µ¡¼¤ÇÇò-5¤¬Â¬Äꤵ¤ì¤ë¤È turnL; } else if(SENSOR_3>black+5){//¤â¤·¸÷¥»¥ó¥µ¡¼¤Ç¹õ+5¤¬Â¬Äꤵ¤ì¤ë¤È mae; } else if(SENSOR_3>black){//¤â¤·¸÷¥»¥ó¥µ¡¼¤Ç¹õ¤¬Â¬Äꤵ¤ì¤ë¤È turnR; } else{ turnRR; t0=CurrentTick();//t0¤Ï¸½ºß¤Î»þ´Ö until((SENSOR_3<black+5)&&(SENSOR_3>black));//¹õ+5¤«¹õ¤Ë¤Ê¤ë¤Þ¤Ç t_black=CurrentTick()-t0; } Wait(step); } }
¤Þ¤º¡¤¸÷¥»¥ó¥µ¡¼¤¬Çò-5¤òĶ¤¨¤ë¤Þ¤Ç¤Þ¤Ã¤¹¤°¿Ê¤ß¡¤¼¡¤Ë¸÷¥»¥ó¥µ¡¼¤¬¸÷¥»¥ó¥µ¡¼¤¬¹õ+5¤òĶ¤¨¤ë¤Þ¤Ç±¦¤Ë¶Ê¤¬¤ë¡¥¤³¤ì¤¬¸òº¹ÅÀ¤Çľ¿Ê¤¹¤ë¥×¥í¥°¥é¥à¤Ç¤¢¤ë¡¥
void crossline()//¸òº¹ÅÀ¤òÅϤë { mae; until(SENSOR_3>white-5);//¸÷¥»¥ó¥µ¡¼¤¬Çò-5¤òĶ¤¨¤ë¤Þ¤Ç turnR until(SENSOR_3>black+5);//¸÷¥»¥ó¥µ¡¼¤¬¹õ+5¤òĶ¤¨¤ë¤Þ¤Ç }
void Rcurve()//±¦¤Ë¶Ê¤¬¤ë { turnRRR; until(SENSOR_3>white-5);//¸÷¥»¥ó¥µ¡¼¤¬Çò-5¤òĶ¤¨¤ë¤Þ¤Ç }
void Lcurve()//º¸¤Ë¶Ê¤¬¤ë { turnLLL until(SENSOR_3>white);//¸÷¥»¥ó¥µ¡¼¤¬Çò¤òĶ¤¨¤ë¤Þ¤Ç }
void kaiten()//¥í¥Ü¥Ã¥È¤ò180Åٲ󞤵¤»¤ë { mae; Wait(900) OnFwd(OUT_B,20);OnRev(OUT_C,10); until(SENSOR_3<black+5); }
¥á¥¤¥ó¥×¥í¥°¥é¥à¤Ï¡¢ÄêµÁ¤·¤¿¤â¤Î¤òÁȤ߹ç¤ï¤»¤Þ¤¹¡¥
task main() { SetSensorLight(S3); linetraceCL();//M¢ªK crossline();//¸òº¹ÅÀ¤òÅϤë OnFwd(OUT_BC,30);Wait(2900);Off(OUT_BC);//K¢ªL OnFwd(OUT_A,30);Wait(1000);Off(OUT_A);//¥¢¡¼¥à¤ò²¼¤²¤Æ¥Ô¥ó¥Ý¥ó¶Ì¤ò¼è¤ë kaiten();//¥í¥Ü¥Ã¥È¤Î¸þ¤¤òÊѤ¨¤ë linetraceSR();L¢ªK Rcurve();//±¦¤Ë¶Ê¤¬¤ë linetreceSL();//K¢ªJ ¡¡¡¡teishi;//°ì»þÄä»ß Lcurve();//º¸¤Ë¶Ê¤¬¤ë linetraceCL();//J¢ªI croseline();//¸òº¹ÅÀ¤òÅϤë linetraceCL();//J¢ªH croseline();//¸òº¹ÅÀ¤òÅϤë linetraceCL();//H¢ªG Lcurve();//º¸¤Ë¶Ê¤¬¤ë linetraceSL();//G¢ªF Lcurve();//º¸¤Ë¶Ê¤¬¤ë linetraceSL();//F¢ªE Lcurve();//º¸¤Ë¶Ê¤¬¤ë linetraceSL();//E¢ªD teishi;//°ì»þÄä»ß crossline();//¸òº¹ÅÀ¤òÅϤë linetraceCR();//D¢ªB teishi;//°ì»þÄä»ß OnRev(OUT_A,30);Wait(1000);Off(OUT_A);//¥¢¡¼¥à¤ò¾å¤²¤Æ¥Ô¥ó¥Ý¥ó¶Ì¤ò½Ð¤¹ }
º£²ó¤Î¥×¥í¥°¥é¥à¤Ï¥µ¥Ö¥ë¡¼¥Á¥ó¤ò¿¤¯ÍѤ¤¤Þ¤·¤¿¡¥»Ï¤á¤Ï¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¤¹¤ë¤À¤±¤Ç¤â¥í¥Ü¥Ã¥È¤¬»×¤¦¤è¤¦¤ËÆ°¤«¤ºÂçÊѶìÏ«¤·¤Þ¤·¤¿¡¥¤·¤«¤·¡¤·ë²Ì¤È¤·¤ÆǼÆÀ¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¥×¥í¥°¥é¥à¤¬¤Ç¤¤¿¤Î¤ÇÎɤ«¤Ã¤¿¤Ç¤¹¡¥¤¿¤À¡¤¥Ü¡¼¥ë¤ò¼è¤ë¤È¤³¤í¤Ç»ß¤Þ¤ë¤¿¤á¤Î¸úΨŪ¤Ê¥×¥í¥°¥é¥à¤¬»×¤¤¤Ä¤«¤Ê¤«¤Ã¤¿¤Î¤Ç¡¤¼¡¤Ï¤½¤³¤ò²þÎɤ·¤Æ¤¤¤¤¿¤¤¤Ç¤¹¡¥