»ä¤Ï°Ê²¼¤Î¥ë¡¼¥È¤ÇÁö¹Ô¤¹¤ë¥í¥Ü¥Ã¥È¤òºîÀ®¤·¤¿¡£
AÃÏÅÀ¤«¤é½Ðȯ ¢ª B ¢ª C(ľ¿Ê) ¢ª D(°ì»þÄä»ß¤Î¸å¡¢Ä¾¿Ê) ¢ª E ¢ª F ¢ª G(°ì»þÄä»ß¤Î¸å¡¢±¦ÀÞ) ¢ª H ¢ª I ¢ª J(±¦ÀÞ) ¢ª K(º¸ÀÞ) ¢ª L(¥Ô¥ó¥Ý¥ó¶Ì¤ò¤Ä¤«¤à) ¢ª K(ľ¿Ê) ¢ª M(°ì»þÄä»ß) ¢ª ¥·¥å¡¼¥È¢ª AÃÏÅÀ¤ËÆþ¤ë(¥´¡¼¥ë)
¥ì¥´¤Î¥¯¥é¥Õ¥È¥¬¥¤¥É¤ò»²¹Í¤Ë¥¿¥¤¥ä¤È¸÷¥»¥ó¥µ¡¼¤òÉÕ¤±¡¢¤½¤³¤Ë¥¢¡¼¥à¤ÎÉôʬ¤ò¼è¤êÉÕ¤±¤¿¡£
¥Ô¥ó¥Ý¥ó¶Ì¤ò¤¹¤¯¤¤¼è¤ë¤è¤¦¤Êµ¡¹½¤Ë¤·¤¿¡£¥Ô¥ó¥Ý¥ó¶Ì¤Þ¤Ç¿Ê¤ß¥¢¡¼¥à¤ò¾å¤²¤ë¤È¥Ô¥ó¥Ý¥ó¶Ì¤¬»ý¤Á¾å¤¬¤ë¡£
¿Þ¤Î¤è¤¦¤Ë¸÷¥»¥ó¥µ¡¼¤Î¼è¤ëÃͤËÂФ¹¤ë¥í¥Ü¥Ã¥È¤ÎÆ°¤¤ò£µÃʳ¬¤Ëʬ¤±¤ë¤³¤È¤Ç¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¤Ç¤¤ë¤è¤¦¤Ë¤·¤¿¡£
¢¤è¤ê¤â¡¤ÎÊý¤¬Ä¹¤¤»þ´Ö¡¢Àþ¾å¤òÄ̤ë¤Î¤Ç¡¢¸÷¥»¥ó¥µ¡¼¤ÎÃͤ¬£³£¸¤ò¼è¤ë»þ´Ö¤¬°ìÄê°Ê¾å¤Ë¤Ê¤Ã¤¿¤é¥í¥Ü¥Ã¥È¤¬»ß¤Þ¤ë¤è¤¦¤Ë¤·¤¿¡£
#define BLACKS 38 #define BLACK 45 #define THRESHOLD 53 #define WHITE 60 #define WHITES 68
#define left_s OnFwd(OUT_A,20);OnRev(OUT_B,20); #define left OnFwd(OUT_A,20);Off(OUT_B); #define right_s OnFwd(OUT_B,20);OnRev(OUT_A,20); #define right OnFwd(OUT_B,20);Off(OUT_A); #define forward OnFwd(OUT_AB,20);
sub follow_line_left() { SetSensorLight(S3); long t0=0,t1=0,time_max=2; while(t1-t0<time_max){ if(SENSOR_3<BLACKS){ t0=CurrentTick(); left_s;until(SENSOR_3<THRESHOLD); t1=CurrentTick(); }else if(SENSOR_3<BLACK){ left; }else if(SENSOR_3<THRESHOLD){ forward; }else if(SENSOR_3<WHITE){ right; }else if(SENSOR_3<WHITES){ right_s; } } Off(OUT_AB); Wait(1000); }
sub follow_line_right() { SetSensorLight(S3); long t0=0,t1=0,time_max=2; while(t1-t0<time_max){ if(SENSOR_3<BLACKS){ t0=CurrentTick(); right_s; until(SENSOR_3<THRESHOLD); t1=CurrentTick(); }else if(SENSOR_3<BLACK){ right; }else if(SENSOR_3<THRESHOLD){ forward; }else if(SENSOR_3<WHITE){ left; }else if(SENSOR_3<WHITES){ left_s; } } Off(OUT_AB); Wait(1000); }
task main() { long t=1000; forward; Wait(1000);¡¡¡¡¡¡¡¡¡¡//A¤«¤é½Ð¤ë¡£ follow_line_left();¡¡ ¡¡¡¡¡¡//B¤«¤éC¤òÄ̤êD¤Ç»ß¤Þ¤ë¡£ forward; Wait(t);¡¡¡¡¡¡¡¡¡¡//D¤Î¸òº¹ÅÀ¤òÅϤ롣 follow_line_left();¡¡¡¡¡¡¡¡¡¡//D¤«¤éE¤òÄ̤êF¤Ç»ß¤Þ¤ë¡£ right; Wait(t);¡¡¡¡¡¡¡¡¡¡//G¤ÇÊý¸þž²ó¡£ follow_line_right();¡¡¡¡¡¡¡¡¡¡//G¤«¤éH¤Þ¤Ç°ÜÆ°¡£ repeat(2){ forward; Wait(t); follow_line_right(); }¡¡¡¡¡¡¡¡¡¡//H¤«¤éI¤òÄ̤êJ¤Ç»ß¤Þ¤ë¡£ right_s; Wait(t); follow_line_right();¡¡¡¡¡¡¡¡¡¡//J¤«¤éK¤Þ¤Ç°ÜÆ°¡£ left_s; Wait(t);¡¡¡¡¡¡¡¡¡¡¡¡//K¤ÇÊý¸þž´¹¡£ follow_line_left();¡¡¡¡¡¡¡¡¡¡¡¡//K¤«¤éL¤Ë°ÜÆ°¡£ OnRev(OUT_C,20); Wait(500);¡¡¡¡¡¡¡¡¡¡//¥Ü¡¼¥ë¤ò¤¹¤¯¤¤¼è¤ë¡£ left_s; Wait(4000);¡¡¡¡¡¡¡¡¡¡¡¡//L¤ÇÊý¸þž´¹¡£ follow_line_right();¡¡¡¡¡¡¡¡¡¡¡¡//L¤«¤éK¤Ë°ÜÆ°¡£ forward;¡¡¡¡¡¡¡¡¡¡ Wait(2000);¡¡¡¡¡¡¡¡¡¡//¸òº¹ÅÀ¤òÅϤ롣 follow_line_right();¡¡¡¡¡¡¡¡¡¡//K¤«¤éM¤Ë°ÜÆ°¡£ OnFwd(OUT_C,20); Wait(500); ¡¡¡¡¡¡¡¡¡¡//¥Ü¡¼¥ë¤ò²¼¤í¤¹¡£ OnRev(OUT_AB,20); Wait(500); OnFwd(OUT_AB,100); Wait(t);¡¡¡¡¡¡¡¡¡¡//¥·¥å¡¼¥È¡£ Off(OUT_AB);¡¡¡¡¡¡¡¡¡¡¡¡//Ää»ß¡£ }
º£²ó¤Î²ÝÂê¤Ç¤Ï¥é¥¤¥ó¥È¥ì¡¼¥¹¡¢¸òº¹ÅÀ¤Ç»ß¤Þ¤ë¤Ê¤É¤ÎÅÀ¤ÇÁ°²ó¤Î²ÝÂ꣱¤ËÈæ¤Ù¤Æ¿¤¯¤ÎÅÀ¤ÇÆñ¤·¤µ¤ò´¶¤¸¤¿¡£º£²ó¤Î²ÝÂê¤Ç¿¤¯¤Î¥È¥é¥¤¡õ¥¨¥é¡¼¤ò·Ð¸³¤·¤¿¤³¤È¤ÇÌäÂê²ò·è¤ÎÎϤò¿¤Ð¤¹¤³¤È¤¬¤Ç¤¤¿¡£¤³¤Îº£²ó¿È¤Ë¤Ä¤±¤¿ÎϤò²ÝÂꣳ¤Ë³è¤«¤·¡¢¤è¤ê¤è¤¤¥í¥Ü¥Ã¥È¡¢¥×¥í¥°¥é¥à¤òºî¤í¤¦¤È»×¤Ã¤¿¡£