Ìܼ¡
¤Ç¤¤ë¸Â¤ê¡¢Á᤯¡¦Àµ³Î¤Ë¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¤¹¤ë¥í¥Ü¥Ã¥È¤òºî¤ë¡£
¥í¥Ü¥Ã¥È¤¬¹õÀþ(line)¤Î¤¢¤ë°ÌÃÖ¤òǧ¼±¤·¡¢¤½¤Î¹õÀþ¤òÄÉÀ×(trace)¤¹¤ë¤³¤È¡£
¥»¥ó¥µ¡¼¤¬¹õÀþ¤òÄɤ¦Íͤʹ½Â¤¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
Á´Âοޡ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÀµÌÌ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡²£ ¡¡¡¡
²þÎɸå
¸÷¥»¥ó¥µ¡¼¤Î¼è¤êÉÕ¤±Êý¤ò¹©Éפ¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢²Äǽ¤Ê¸Â¤ê¥»¥ó¥µ¡¼Æ±»Î¤ÎÉý¤ò¾®¤µ¤¯¤·¤¿¡£
¥»¥ó¥µ¡¼Æ±»Î¤ÎÉý¤ò¾®¤µ¤¯¤·¤¿¤Î¤Ï¡¢¥»¥ó¥µ¡¼¤¬¹õÀþ¤«¤é¤Ï¤ß½Ð¤¿¤È¤¤Ë¹õÀþ¾å¤ËÌá¤ëÆ°ºî¤Î²ó¿ô¤ò¾¯¤Ê¤¯¤¹¤ë¤¿¤á¤Ç¤¢¤ë¡£
¤³¤¦¤¹¤ë¤³¤È¤Ç¡¢¥í¥Ü¥Ã¥È¤Ï¤è¤ê³ê¤é¤«¤ÊÆ°¤¤ò¸«¤»¤Æ¤¯¤ì¤ë¡£
#define THRESHOLD 45 //ïçÃͤÎÀßÄê #define RUN_TIME 3000 #define DEFAULT_POWER 5 //¥Ç¥Õ¥©¥ë¥È¤Î¥â¡¼¥¿¡¼¤Î¶¯¤µ¤òÀßÄê #define SERCH_TIME 4 //Æ»¤ò³°¤ì¤¿¤«¤É¤¦¤«¤ÎȽÄê»þ´Ö¡§SERCH_TIME/10Éà sub turn_360(){ //360ÅÙ²óž OnRev(OUT_A); OnFwd(OUT_C); Wait(240); Off(OUT_A+OUT_C); } sub turn_left(){ //0.01Éôֺ¸¤ËÀû²ö Off(OUT_A); OnFwd(OUT_C); Wait(1); } sub turn_right(){ //0.01Éôֱ¦¤ËÀû²ö OnFwd(OUT_A); Off(OUT_C); Wait(1); } sub one_stop_black(){ //¥»¥ó¥µ¡¼1¡¦3¤¬¶¦¤Ë¹õ¤Ë¤Ê¤ë¤Þ¤Çľ¿Ê until(SENSOR_1<THRESHOLD && SENSOR_3<THRESHOLD){ OnFwd(OUT_A+OUT_C); } } sub one_stop_white(){ //¥»¥ó¥µ¡¼1¡¦3¤¬¶¦¤ËÇò¤Ë¤Ê¤ë¤Þ¤Çľ¿Ê¡¡¡¡ until(SENSOR_1>=THRESHOLD && SENSOR_3>=THRESHOLD){ OnFwd(OUT_A+OUT_C); } } sub search(){¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//Æ»¤ò³°¤ì¤¿¤È¤¤Ë¸µ¤ÎÆ»¤ËÌá¤ëÆ°ºî ClearTimer(0); while(SENSOR_1>=THRESHOLD && SENSOR_3>=THRESHOLD){ OnFwd(OUT_A+OUT_C); if(Timer(0)>SERCH_TIME){ //Æ»¤ò³°¤ì¤¿¤«¤É¤¦¤«¤ÎȽÄê»þ´Ö¤è¤êŤ¯¤Ê¤Ã¤¿¤È¤ OnRev(OUT_A+OUT_C); Wait(SERCH_TIME*12); //ȽÄê»þ´Ö¤Îʬ¤À¤±¥Ð¥Ã¥¯¤¹¤ë while(SENSOR_1>=THRESHOLD && SENSOR_3>=THRESHOLD){//¤É¤Á¤é¤«¤Î¥»¥ó¥µ¡¼¤¬Æ»¤òȯ¸«¤¹¤ë¤Þ¤Ç²óž¤·¤Ê¤¬¤éÆ»¤òõ¤¹ OnFwd(OUT_A); OnRev(OUT_C); } } } } task main() { int j,k; int a,b; j=0; //º¸¥â¡¼¥¿¡¼¤ò¼å¤á¤ëÅٹ礤 k=0; //±¦¥â¡¼¥¿¡¼¤ò¼å¤á¤ëÅٹ礤 a=0; //ľÁ°¤ÎÆ°ºî¤Çº¸¤Ë¶Ê¤¬¤Ã¤¿»þ¡¢¤³¤ÎÃͤÏ1¤Ë¤Ê¤ë¡£ b=0; //ľÁ°¤ÎÆ°ºî¤Ç±¦¤Ë¶Ê¤¬¤Ã¤¿»þ¡¢¤³¤ÎÃͤÏ1¤Ë¤Ê¤ë¡£ SetSensor(SENSOR_1,SENSOR_LIGHT); //¥»¥ó¥µ¡Ý£±¡Ê±¦¡Ë¤ò¸÷¥»¥ó¥µ¡¼¤Ë¥»¥Ã¥È SetSensor(SENSOR_3,SENSOR_LIGHT); //¥»¥ó¥µ¡Ý£³¡Êº¸¡Ë¤ò¸÷¥»¥ó¥µ¡¼¤Ë¥»¥Ã¥È SetSensor(SENSOR_2,SENSOR_TOUCH); //¥»¥ó¥µ¡Ý£²¤ò¥¿¥Ã¥Á¥»¥ó¥µ¡¼¤Ë¥»¥Ã¥È SetPower(OUT_A,DEFAULT_POWER-2); //¤Þ¤Ã¤¹¤°Áö¤ì¤ë¤è¤¦¤Ëº¸±¦¤Î¥â¡¼¥¿¡¼¤Î¶¯¤µ¤òÈùÄ´À° SetPower(OUT_C,DEFAULT_POWER); while(true){ //¥¿¥Ã¥Á¥»¥ó¥µ¡¼¤¬¿¨¤ì¤¿¤é360Åٲ󞤹¤ë if(SENSOR_2==1){ turn_360(); } if(SENSOR_1<THRESHOLD && SENSOR_3<THRESHOLD){//ξÊý¹õ¤Ê¤é¤Þ¤Ã¤¹¤°¿Ê¤à if(a==1){ //º¸¤Ë¶Ê¤¬¤Ã¤¿¡ª j++;¡¡¡¡¡¡¡¡¡¡¡¡ //º¸¥â¡¼¥¿¡¼¤ò¼å¤á¤ëÅٹ礤 SetPower(OUT_C,DEFAULT_POWER); //±¦¤Î¥â¡¼¥¿¡¼¤Î¶¯¤µ¤ò¥Ç¥Õ¥©¥ë¥È¤ËÌ᤹ SetPower(OUT_A,DEFAULT_POWER-2-j); //Ϣ³¤·¤Æ¶Ê¤¬¤Ã¤¿²ó¿ô¤À¤±¤è¤ê¾®¤µ¤¤º¸¥«¡¼¥Ö¤òÉÁ¤¯¤è¤¦A¤Ø¤Î½ÐÎϤòÍÞ¤¨¤ë a=0;¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ //º¸¤Ë¶Ê¤¬¤Ã¤¿¤È¤¤¤¦µ²±¤ò¥ê¥»¥Ã¥È k=0; //±¦¥â¡¼¥¿¡¼¤Î¼å¤á¤ëÅٹ礤¤ò0¡Ê¼å¤á¤Ê¤¤)¤Ë¤¹¤ë¡£ } if(b==1){ //±¦¤Ë¶Ê¤¬¤Ã¤¿¡ª k++; //±¦¥â¡¼¥¿¡¼¤ò¼å¤á¤ëÅٹ礤 SetPower(OUT_A,DEFAULT_POWER-2); //º¸¤Î¥â¡¼¥¿¡¼¤Î¶¯¤µ¤ò¥Ç¥Õ¥©¥ë¥È¤ËÌ᤹ SetPower(OUT_C,DEFAULT_POWER-k); //Ϣ³¤·¤Æ¶Ê¤¬¤Ã¤¿²ó¿ô¤À¤±¤è¤ê¾®¤µ¤¤±¦¥«¡¼¥Ö¤òÉÁ¤¯¤è¤¦C¤Ø¤Î½ÐÎϤòÍÞ¤¨¤ë ¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡b=0; //±¦¤Ë¶Ê¤¬¤Ã¤¿¤È¤¤¤¦µ²±¤ò¥ê¥»¥Ã¥È //º¸¥â¡¼¥¿¡¼¤Î¼å¤á¤ëÅٹ礤¤ò0¡Ê¼å¤á¤Ê¤¤)¤Ë¤¹¤ë¡£ j=0; } OnFwd(OUT_A+OUT_C); } ¡¡ if(SENSOR_1>=THRESHOLD && SENSOR_3<THRESHOLD){//¥»¥ó¥µ¡Ý£³¤¬¹õ¤Ê¤éº¸¤Ë¶Ê¤¬¤ë a=1; //º¸¤Ë¶Ê¤¬¤Ã¤¿¤³¤È¤òµ²±¤¹¤ë turn_left(); } ¡¡ if(SENSOR_1<THRESHOLD && SENSOR_3>=THRESHOLD){//¥»¥ó¥µ¡Ý£±¤¬¹õ¤Ê¤é±¦¤Ë¶Ê¤¬¤ë b=1; //±¦¤Ë¶Ê¤¬¤Ã¤¿¤³¤È¤òµ²±¤¹¤ë turn_right(); } if(SENSOR_1>=THRESHOLD && SENSOR_3>=THRESHOLD){//ξÊýÇò¤Ê¤é°ì»þÄä»ß SetPower(OUT_A,DEFAULT_POWER-2); ¡¡¡¡¡¡¡¡SetPower(OUT_C,DEFAULT_POWER); ¡¡¡¡¡¡//¥â¡¼¥¿¡¼A¡¦C¤Ø¤Î½ÐÎϤò¸µ¤ËÌ᤹ Off(OUT_A+OUT_C); Wait(300); //3Éôְì»þÄä»ß if(j>=1||a==1){ //°ì»þÄä»ß¤¹¤ëľÁ°¤Ëº¸¤Ë¶Ê¤¬¤Ã¤Æ¤¤¤¿¤Ê¤é°ì»þÄä»ß¸å¤Î¿ÊÏ©¤ò±¦Â¦¤Ø½¤Àµ¤¹¤ë turn_right(); Wait(1); } if(k>=1||b==1){ //°ì»þÄä»ß¤¹¤ëľÁ°¤Ë±¦¤Ë¶Ê¤¬¤Ã¤Æ¤¤¤¿¤Ê¤é°ì»þÄä»ß¸å¤Î¿ÊÏ©¤òº¸Â¦¤Ø½¤Àµ¤¹¤ë turn_left(); Wait(1); } one_stop_black(); //°ì»þÄä»ß¸åÍ¥Àèƻϩ¤ò¤Þ¤¿¤¤¤Ç¸þ¤³¤¦Â¦¤ÎÆ»¤Ë¿Ê¤à one_stop_white(); search(); //Æ»¤òõ¤¹ } } }
¥¿¥Ã¥Á¥»¥ó¥µ¡¼¤¬¿¨¤ì¤¿¤È¤¤Ë»°ÉôÖÄä»ß¤¹¤ë¡£
¾åµ¤Î¥×¥í¥°¥é¥à¤Î¡Ö¥¿¥Ã¥Á¥»¥ó¥µ¡¼¤¬¿¨¤ì¤¿¤é360Åٲ󞤹¤ë¡×¤ÎÉôʬ¤ò
while(true){ //¥¿¥Ã¥Á¥»¥ó¥µ¡¼¤¬¿¨¤ì¤¿¤é£³ÉôÖÄä»ß¤¹¤ë if(SENSOR_2==1){ Off(OUT_A+OUT_C); Wait(300); }
¤È¤¹¤ë¡£
ÍÇÏ¡§¥³¡¼¥¹¤òñĴ¤Ê¤â¤Î¤Ç¤Ï¤Ê¤¯¡¢Æñ½ê¤¬¤¤¤¯¤Ä¤â¤ß¤é¤ì¤ëÊ£»¨¤Ê¤â¤Î¤Ë¤·¤Æ¤·¤Þ¤Ã¤¿¤¿¤á¡¢¤ä¤ê¤¬¤¤¤Ï¤¢¤Ã¤¿¤¬¡¢´°Áö¤¹¤ë¤Î¤Ë¶ìÏ«¤·¤¿¡£
·¬Ì¾¡§¸òº¹ÅÀ¤Ç¤Î°ì»þÄä»ß¸å¸µ¤Î¥³¡¼¥¹¤ËÌá¤ë¤³¤ÈÅù¤¬Èó¾ï¤ËÂçÊѤÀ¤Ã¤¿¤¬¡¢¥í¥Ü¤¬Ê£»¨¤ÇÆñ¤·¤¤¥³¡¼¥¹¤ò°ì¼þÁö¤Ã¤¿¤È¤¤Ï¶½Ê³¤·¤¿¡£
¤è¤ê¿Íͤʾ×ÆͤËÂФ·¤ÆÂçÍ×½ÐÍè¤ë¤è¤¦¤Ë²þÎÉ¡£
¤è¤í¤·¤±¤ì¤Ð¥³¥á¥ó¥È¤ª´ê¤¤¤·¤Þ¤¹¡£