#contents *²ÝÂê [#d9a8f66f] Ⱦ·Â1m°ÊÆâ¤Ë¤¢¤ë¶õ¤´Ì¤òõ¤·¤Æ¡¢25cm¤Îµ÷Î¥¤«¤é¥Ü¡¼¥ë¤òž¤¬¤·¤Æ¤½¤Î¶õ¤´Ì¤ËÅö¤Æ¤ë¥í¥Ü¥Ã¥È¤òÀ½ºî¤·¤Ê¤µ¤¤¡£¤¿¤À¤·25cm°ÊÆâ¤Ë¶õ¤´Ì¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢30cm¤Þ¤ÇÎ¥¤ì¤ë¤³¤È¡£ *¥í¥Ü¥Ã¥È¤ÎÀâÌÀ¡¢¥¢¡¼¥à¤ÎÆ°¤«¤·Êý [#afe91d8e] #ref(./DSC_0014~2.jpg) #ref(./DSC_0017~2.jpg) ¥í¥Ü¥Ã¥ÈËÜÂΤϲÝÂꣲ¤Î¥í¥Ü¥Ã¥È¤ËĶ²»ÇÈ¥»¥ó¥µ¤ò¼è¤êÉÕ¤±¤¿¤À¤±¤Ç¤¢¤ë¡£¤Þ¤¿¡¢²ÝÂꣲ¤ÈƱ¤¸¤Ç¥¢¡¼¥à¤ò¾å²¼¤ËÆ°¤«¤·¡¢¸÷¥»¥ó¥µ¤È²£¤Ë¤Ä¤±¤¿¥Ö¥í¥Ã¥¯¤Î´Ö¤Ë¥Ü¡¼¥ë¤òÆþ¤ì¥¢¡¼¥à¤ò¾å¤«¤é¤«¤Ö¤»¤ë¤è¤¦¤Ë¤·¤Æ¡¢¥Ü¡¼¥ë¤ò±¿¤Ö¤è¤¦¤Ë¤·¤¿¡£¤½¤·¤Æ¡¢¶õ¤´Ì¤ËÅö¤Æ¤ë¤È¤¤Ï¥¢¡¼¥à¤ò¾å¤Ë¾å¤²¤Æ¥í¥Ü¥Ã¥È¤òÁ°¿Ê¤µ¤»¤ë¤³¤È¤Ç¥í¥Ü¥Ã¥ÈËÜÂΤ¬¥Ü¡¼¥ë¤Ë¤Ö¤Ä¤«¤ê¡¢¥Ü¡¼¥ë¤¬Á°¤Ëž¤¬¤ë¤è¤¦¤Ë¤·¤¿¡£ *¥×¥í¥°¥é¥à¤ÎÀâÌÀ [#cbe5b999] #define SPEED 50 // ¹â® #define SPEED_SLOW 30 // Äã® #define go_forward OnFwd(OUT_BC,100);Wait(500);Off(OUT_BC); // ľ¿Ê #define arm_up OnRev(OUT_A,100);Wait(500);Off(OUT_A); // ¡¡¥¢¡¼¥à¤ò¾å¤²¤ë 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 serchDirection(long ang) // ¸½ºß¤ÎÊý¸þ¤òÃæ¿´¤ËangÅÙ¤ÎÈϰϤÇõ¤· { // ¾ã³²Êª¤Þ¤Ç¤Îµ÷Î¥¤òÊÖ¤¹ ¡¡long angle,tacho_min=0, tacho_corr ; ¡¡ int d_min; ¡¡ d_min=300; // ²¾¤ÎºÇ¾®ÃÍ ¡¡ angle = (track/diameter)*ang; // Àû²ó³ÑÅÙ¤«¤é¥¿¥¤¥ä¤Î²óž¤ò·×»» ¡¡ turnAng(ang/2); // »ØÄꤵ¤ì¤¿³ÑÅÙ¤ÎȾʬ¤òÀû²ó ¡¡ ResetTachoCount(OUT_BC); // ³ÑÅٷ׬¤ò¥ê¥»¥Ã¥È ¡¡ OnFwdSync(OUT_BC,SPEED_SLOW,-100); // ¡¡ 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() { ¡¡ SetSensorLowspeed(S1);¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ // ´Ì¤ÎÊý¸þ¤òõ¤·¤¿¸å¡¢¶á¤Å¤¤¤Æ£³£µÑ¼êÁ°¤ÇÄä»ß¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡ int d = serchDirection(360); ¡¡ if (d > 35) {¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡ ¡¡ fwdDist(d-35.0);¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡ } ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ // ¥Ü¡¼¥ë¤òȯ¼Í ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ arm_up; ¡¡ go_forward; } *¹©Éפ·¤¿¤È¤³¤í [#z40a8a83] ½é¤á¡¢´Ì¤Ë¥Ü¡¼¥ë¤òÅö¤Æ¤ë¤¿¤á¤Ë´Ì¤Î25ѼêÁ°¤Ç¥í¥Ü¥Ã¥È¤òÄä»ß¤µ¤»¤Æ¡¢¤½¤³¤«¤é¥Ü¡¼¥ë¤òȯ¼Í¤µ¤»¤Æ¤¤¤¿¤¬¡¢¥Ü¡¼¥ë¤òȯ¼Í¤¹¤ë°ÌÃÖ¤¬´Ì¤Ë¤¹¤´¤¯¶á¤¯¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¤Î¤Ç¡¢Ää»ß¤¹¤ë°ÌÃÖ¤ò£³£µÑ¼êÁ°¤Ë¤·¤¿¤È¤³¤í¡¢£²£µÑ°Ê¾åÎ¥¤ì¤Æ¥Ü¡¼¥ë¤òȯ¼Í¤¹¤ë¤³¤È¤¬¤Ç¤´Ì¤Ë¥Ü¡¼¥ë¤òÅö¤Æ¤ë¤³¤È¤¬¤Ç¤¤¿¡£¤Þ¤¿¡¢¥í¥Ü¥Ã¥ÈËÜÂΤò¤ò¤Ç¤¤ë¤À¤±¥·¥ó¥×¥ë¤Ë¤¹¤ë¤³¤È¤Ç¶õ¤´Ì¤òõ¤¹¤È¤¤Ë²óž¤·¤ä¤¹¤¯¤Ê¤ê¥Ü¡¼¥ë¤ò»ý¤Ã¤¿¤Þ¤Þ¤ÎÆ°¤¤â¥¹¥à¡¼¥º¤Ë¤Ê¤Ã¤¿¡£¤½¤·¤Æ¡¢²ÝÂꣲ¤Ç¤Ï¥·¥å¡¼¥È¤Î»þ¤Ë¥¢¡¼¥à¤ò¾å¤²¤Æ¡¢¸åÂष¤Æ¤«¤é¥¢¡¼¥à¤ò²¼¤²¡¢Á°¿Ê¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤¿¤¬¤½¤ì¤Ç¤Ï¥Ü¡¼¥ë¤¬¥·¥å¡¼¥È¤ò¤¹¤ëÁ°¤Ëž¤¬¤Ã¤Æ¤·¤Þ¤¤¾å¼ê¤¯¥·¥å¡¼¥È¤¹¤ë¤³¤È¤¬¤Ç¤¤Ê¤«¤Ã¤¿¤Î¤Ç¡¢º£²ó¤Ï¥¢¡¼¥à¤ò¾å¤²¤Æ¤¹¤°¤½¤Î¤Þ¤ÞÁ°¿Ê¤¹¤ë¤è¤¦¤Ë¤·¤¿¤È¤³¤í¾å¼ê¤¯¥·¥å¡¼¥È¤¹¤ë¤³¤È¤¬¤Ç¤¤¿¡£ *È¿¾ÊÅÀ [#o31780b0] º£²ó¤Î²ÝÂê¤Ï¡¢¡ÖȾ·Â1m°ÊÆâ¤Ë¤¢¤ë¶õ¤´Ì¤òõ¤·¤Æ¡¢25cm¤Îµ÷Î¥¤«¤é¥Ü¡¼¥ë¤òž¤¬¤·¤Æ¤½¤Î¶õ¤´Ì¤ËÅö¤Æ¤ë¥í¥Ü¥Ã¥È¤òÀ½ºî¤·¤Ê¤µ¤¤¡£¤¿¤À¤·25cm°ÊÆâ¤Ë¶õ¤´Ì¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢30cm¤Þ¤ÇÎ¥¤ì¤ë¤³¤È¡£¡×¤È¤¤¤¦¤³¤È¤À¤Ã¤¿¤¬¡¢¡Ö25cm°ÊÆâ¤Ë¶õ¤´Ì¤¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢30cm¤Þ¤ÇÎ¥¤ì¤ë¤³¤È¡×¤È¤¤¤¦¥×¥í¥°¥é¥à¤ò²Ã¤¨Ëº¤ì¤Æ¤·¤Þ¤Ã¤¿¤³¤È¤Ç¤¢¤ë¡£ *´¶ÁÛ [#l724f140] º£²ó¤Î²ÝÂê¤Ï¡¢¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤¬ÇÛÉÛ¤µ¤ì¤Æ¤¤¤¿¤Î¤Ç¡¢¥×¥í¥°¥é¥ß¥ó¥°¤Ë´Ø¤·¤Æ¤Ï¤½¤Î¥×¥í¥°¥é¥à¤ò¾¯¤·ÊѤ¨¤¿¤À¤±¤ÇÆ°¤«¤¹¤³¤È¤¬¤Ç¤¤¿¤Î¤Ç¤½¤ì¤Û¤É¶ìÏ«¤¹¤ë¤³¤È¤Ï¤Ê¤«¤Ã¤¿¡£¤Þ¤¿¡¢¥í¥Ü¥Ã¥È¤â²ÝÂꣲ¤Î¥í¥Ü¥Ã¥È¤ËĶ²»ÇÈ¥»¥ó¥µ¤ò¼è¤êÉÕ¤±¤ë¤À¤±¤À¤Ã¤¿¤Î¤Ç¥¹¥à¡¼¥º¤Ëºî¶È¤¹¤ë¤³¤È¤¬¤Ç¤¤¿¡£¤·¤«¤·¡¢ÇÛÉÛ¤µ¤ì¤¿¥×¥í¥°¥é¥à¤¬Æñ¤·¤¯¡¢Íý²ò¤¹¤ë¤Î¤Ë¤«¤Ê¤ê¶ìÏ«¤·¤¿¡£¤Þ¤¿¡¢º£²ó¤ÏÇÛÉÛ¤µ¤ì¤¿¥×¥í¥°¥é¥à¤ò¾¯¤·ÊѤ¨¤¿¤À¤±¤Ê¤Î¤Ç¡¢º£ÅÙ¤ä¤ë¤È¤¤Ï¡¢¼«Ê¬¤Ç¥×¥í¥°¥é¥ß¥ó¥°¤·¤Æ¡¢¥í¥Ü¥Ã¥È¤òÆ°¤«¤·¤¿¤¤¡£¤½¤·¤Æ¡¢²ÝÂê¤Ë¼è¤êÁȤà¤È¤¤Ï¡¢¤·¤Ã¤«¤ê¤Èʸ¤òÆɤߡ¢´Ö°ã¤¤¤¬Ìµ¤¤¤è¤¦¤Ë¼è¤êÁȤߤ¿¤¤¡£