º£²ó¤Î²ÝÂê¤ÏȾ·Â1m°ÊÆâ¤Ë¤¢¤ë¶õ¤´Ì¤òõ¤·¤Æ¡¢25cm¤Îµ÷Î¥¤«¤é¥Ü¡¼¥ë¤òž¤¬¤·¡¢¤½¤Î¶õ¤´Ì¤ËÅö¤Æ¤ë¥í¥Ü¥Ã¥È¤òÀ½ºî¤¹¤ë¤³¤È¤Ç¤¹¡£
¤¿¤À¤·25cm°ÊÆâ¤Ë¶õ¤´Ì¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢30cm¤Þ¤ÇÎ¥¤ì¤ë¤³¤È¤¬¾ò·ï¤È¤Ê¤ê¤Þ¤¹¡£
¥í¥Ü¥Ã¥È¤Ï²ÝÂꣲ¤Ç»È¤Ã¤¿¤â¤Î¤ò±þÍѤµ¤»¤Þ¤·¤¿¡£
¥·¥ç¥Ù¥ë¤ÎÉôʬ¤ËĶ²»ÇÈ¥»¥ó¥µ¡¼¤ò¼è¤êÉÕ¤±¤¿¤é¡¢¤«¤Ê¤ê½Å¤¯¤Ê¤êÆ°¤¤¬¿´ÇÛ¤À¤Ã¤¿¤Î¤Ç ¥¢¡¼¥à¼þÊդΥѡ¼¥Ä¤ò¼è¤ê½ü¤·ÚÎ̲½¤µ¤»¤Þ¤·¤¿¡£
¤Þ¤¿Á°²ó¤ÎÌäÂêÅÀ¤Ç¤â¤¢¤Ã¤¿½ÅÎ̤äÂ礤µ¤Ë¤Ä¤¤¤Æ¤âËÜÂΤ˻Ȥ¦¥Ñ¡¼¥Ä¤ò¸º¤é¤·¤Æ¡¢ °ì²ó¤ê¾®¤µ¤¯¤µ¤»¤Þ¤·¤¿¡£
#define SPEED 50 #define SPEED_SLOW 30 #define down OnFwd(OUT_A,50);Wait(500);Off(OUT_A);Wait(300); #define up OnRev(OUT_A,60);Wait(500);Off(OUT_A);Wait(300); #define goal OnRev(OUT_BC,50);Wait(500);Off(OUT_BC);Wait(500);\ up;OnFwd(OUT_BC,100);Wait(300);Off(OUT_BC); const float diameter=5.45; const float track=10.35; const float pi=3.1415; void fwdDist(float d)¡¡¡¡¡¡¡¡//µ÷Î¥dÑÁ°¿Ê { long angle; angle=d/(diameter*pi)*360.0; RotateMotorEx(OUT_BC,SPEED_SLOW,angle,0,true,true); } void turnAng(long ang)¡¡¡¡¡¡//³ÑÅÙangÅ٤λþ·×²ó¤êÀû²ó { long angle; angle=track/diameter*ang; RotateMotorEx(OUT_BC,SPEED_SLOW,angle,100,true,true); } int searchDirection(long ang)¡¡¡¡//¸½ºß¤ÎÊý¸þ¤òÃæ¿´¤ËangÅÙ¤ÎÈϰϤÇõ¤·¾ã³²Êª¤Þ¤Ç¤Îµ÷Î¥¤òÊÖ¤¹ { long angle,tacho_min=0, int d_min; d_min=300; //²¾¤ÎºÇ¾®ÃÍ angle=(track/diameter)*ang;¡¡¡¡¡¡//Àû²ó³ÑÅÙ¤«¤é¥¿¥¤¥ä¤Î²óž¤ò·×»» turnAng(ang/2); //»ØÄꤵ¤ì¤¿³ÑÅÙ¤ÎȾʬ¤òÀû²ó ResetTachoCount(OUT_BC); //³ÑÅٷ׬¤ò¥ê¥»¥Ã¥È OnFwdSync(OUT_BC,SPEED_SLOW,-100);¡¡¡¡//È¿»þ·×²ó¤êÀû²ó while(MotorTachoCount(OUT_B)<=angle){ if(SensorUS(S1)<d_min){¡¡//¤½¤ì¤Þ¤Ç¤ÎºÇ¾®Ãͤè¤êÄ㤱¤ì¤Ð d_min=SensorUS(S1);¡¡¡¡//²¾¤ÎºÇ¾®Ãͤò¹¹¿· tacho_min=MotorTachoCount(OUT_B);¡¡¡¡//ºÇ¾®ÃͤòµÏ¿¤·¤¿°ÌÃÖ¤òµ²±¤·¤Æ¤ª¤¯ } } OnFwdSyncEx(OUT_BC,SPEED_SLOW,100,RESET_NONE); until(MotorTachoCount(OUT_B)<=tacho_min||SensorUS(S1)<=d_min); Wait(14);¡¡¡¡//ÈùÄ´À° Off(OUT_BC);Wait(500); return d_min;¡¡//ºÇ¾®ÃͤòÊÖ¤¹ } task main() { repeat(2){ SetSensorLowspeed(S1); int d=searchDirection(360); if(d>10){ fwdDist(d-10.0); goal; } } }
¥×¥í¥°¥é¥à¤Ï¤â¤é¤Ã¤¿¥×¥ê¥ó¥È¤ò¥Ù¡¼¥¹¤ËÁȤßΩ¤Æ¤Þ¤·¤¿¡£
°ì²ó¤Îº÷Ũ¤Ç¤ÏÀµ³Î¤ËÌÜɸ¤òõ¤»¤Ê¤«¤Ã¤¿¤Î¤ÇÆó²ó¹Ô¤¦¤³¤È¤ÇÀºÌ©À¤ò¹â¤á¤Þ¤·¤¿¡£
¤µ¤é¤Ë¥í¥Ü¥Ã¥È¤ÎÆ°¤¤¬Â翶¤ê¤Ë¤Ê¤é¤Ê¤¤¤è¤¦¡¢¥¹¥Ô¡¼¥É¤òÍÞ¤¨¤Þ¤·¤¿¡£
¥´¡¼¥ë¤Î¥×¥í¥°¥é¥à¤ÏÁ°²ó¤Î²ÝÂê¤Ç¤âÍѤ¤¤¿¤â¤Î¤Ç¤¹¤¬¡¢¥·¥ç¥Ù¥ë¤ËĶ²»ÇÈ¥»¥ó¥µ¡¼¤òÉÕ¤±¤¿·ë²Ì¡¢ ¥¢¡¼¥à¤ò²¼¤í¤¹»þ¤ËÀª¤¤¤¬¶¯¤«¤Ã¤¿¤Î¤Ç¥Ñ¥ï¡¼¤ò½¤Àµ¤·¤Þ¤·¤¿¡£
¼¡¤Î¥í¥Ü¥³¥ó¤Î½àÈ÷¤ò¤·¤Ê¤¯¤Æ¤Ï¤¤¤±¤Ê¤«¤Ã¤¿¤Î¤Ç¤³¤Î²ÝÂê¤Ë¼è¤êÁȤó¤Ç¤¤¤é¤ì¤ë»þ´Ö¤¬¾¯¤Ê¤¯¡¢ ¥í¥Ü¥Ã¥È¤ò°ì¤«¤éÁȤßΩ¤Æ¤Æ¤¤¤¯¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿¡£
¤·¤«¤·¤Ç¤¤ë¸Â¤ê¤Î²þÎɤò²Ã¤¨¤Æ¡¢¶õ¤´Ì¤Ë¥Ü¡¼¥ë¤ò¤Ö¤Ä¤±¤ë¤³¤È¤¬½ÐÍ褿¤Î¤Ï¡¢ ¸Â¤é¤ì¤¿»þ´Ö¤ÎÃæ¤Ç¤è¤¯¤Ç¤¤¿¤È»×¤¤¤Þ¤¹¡£
º£²ó¤Ï¤¢¤Þ¤ê¥Á¡¼¥à¤Ç½¸¤Þ¤ì¤º¡¢¶¨ÎϤ·¤Å¤é¤«¤Ã¤¿¤Î¤Ç¼¡¤Î¥í¥Ü¥³¥ó¤Ï ¥Á¡¼¥à¤ÇÏ¢·È¤·¤ÆÄ©¤ß¤¿¤¤¤Ç¤¹¡£