#contents *²ÝÂêÆâÍÆ [#g6c199ec] º£²ó¤Î²ÝÂê¤Ï¼«Î©·¿¥í¥Ü¥Ã¥È¤òÍѤ¤¤ÆÆ󤫽ê¤Î»æ¥³¥Ã¥×¤ÎÃæ¤Ë¤¢¤ëÆó¤Ä¤Î¥Ü¡¼¥ë¤Î°ÌÃÖ¤òÆþ¤ìÂؤ¨¤ë¤È¤¤¤¦¤â¤Î¤Ç¤¢¤ë¡£¤³¤ÎºÝ¡¢Æó¤Ä¤¢¤ë¶õ¤Î»æ¥³¥Ã¥×¤òÍѤ¤¤ë¤³¤È¤¬¤Ç¤¤ë¡£ *¥í¥Ü¥Ã¥ÈËÜÂÎ [#b5cdd40c] **¥³¥ó¥»¥×¥È [#m059c531] ¥Ü¡¼¥ë¤Î°ÜÆ°¤¹¤ë¤È¤¤Ë¡¢¶õ¤Î»æ¥³¥Ã¥×¤ò»È¤ï¤Ê¤¤¤ÇºÑ¤à¤è¤¦¤Ë¡¢¥í¥Ü¥Ã¥ÈËÜÂΤˣ´¤Ä¥Ü¡¼¥ë¤ò³ÊǼ¤Ç¤¤ë¤è¤¦¤Ë¤·¡¢½ç¼¡Æó¤Ä¤º¤Ä¹ß¤í¤¹¤³¤È¤ÇÆþ¤ìÂؤ¨¤é¤ì¤ë¤è¤¦¤Ë¤¹¤ë¡£ **´°À®ÉÊ [#rbb6f1d7] ¥³¥ó¥»¥×¥ÈÄ̤ê¤Îµ¡¹½¤òºî¤ë¤³¤È¤¬¤Ç¤¤¿¡£¤³¤Îµ¡¹½¤Î¤ª¤«¤²¤Ç¡¢°ÌÃÖ¤µ¤¨¹ç¤¨¤Ð¥Ü¡¼¥ë¤òÆó¤Ä³Î¼Â¤ËÆþ¤ì¤é¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£ &ref(./1423658987925.jpg,100%);&ref(./1423658989038.jpg,100%);&ref(./1423658977120.jpg,100%); &ref(./1423658982987.jpg,100%);&ref(./1423658981273.jpg,100%); ¥¢¡¼¥àÉô¤ÏÄϤàÉôʬ¤òŤ¯¤¹¤ë¤³¤È¤Ç¡¢¥¢¡¼¥à¤ò¤½¤Î¤Þ¤Þ»ý¤Á¾å¤²¤ë¤³¤È¤Ç¹â¤¤°ÌÃ֤˳ÊǼ¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£ #ref(./1423658995152.jpg,100%) *¥×¥í¥°¥é¥à [#j4a127c7] **¥³¥ó¥»¥×¥È [#ze362640] µ¡¹½¤ÎÆÃÀ¾å¡¢°ÜÆ°¤¹¤ë²ó¿ô¤Ï¾¯¤Ê¤¤¤Î¤Ç¡¢¤¢¤ëÄøÅ٤ε÷Î¥¤Þ¤Çľ¿Ê¿®¹æ¤Ç¶á¤Å¤¡¢Ä¶²»ÇÈ¥»¥ó¥µ¤Ç°ÌÃÖ¤ò³ÎÄꤷ¡¢¶á¤Å¤¡¢¼è¤ë¡¦¹ß¤í¤¹Æ°ºî¤ò¤¹¤ë¤è¤¦¤Ê¥×¥í¥°¥é¥à¤Ë¤¹¤ë¡£ **´°À®ÉÊ [#s31247f3] À½ºîÅÓÃæ¤Þ¤Ç¤ÏÎɤ«¤Ã¤¿¤Î¤À¤¬¡¢¥í¥Ü¥Ã¥È¤¬´°À®¤·¤¿¤¢¤È¡¢Ä¶²»ÇÈ¥»¥ó¥µ¤ÎÃͤ¬°ÂÄꤷ¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¡£¤½¤Î¤¿¤á¥³¥ó¥»¥×¥È¤Î¤è¤¦¤Ê¥×¥í¥°¥é¥à¤ò»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤¤º¡¢¿Í¤Î¼ê¤ÎÈùÄ´À°¤¬É¬Í×¤Ê¥Ý¥í¥°¥é¥à¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿ À½ºîÅÓÃæ¤Þ¤Ç¤ÏÎɤ«¤Ã¤¿¤Î¤À¤¬¡¢¥í¥Ü¥Ã¥È¤¬´°À®¤·¤¿¤¢¤È¡¢Ä¶²»ÇÈ¥»¥ó¥µ¤ÎÃͤ¬°ÂÄꤷ¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¡£¤½¤Î¤¿¤á¥³¥ó¥»¥×¥È¤Î¤è¤¦¤Ê¥×¥í¥°¥é¥à¤ò»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤¤º¡¢¿Í¤Î¼ê¤ÎÈùÄ´À°¤¬É¬Í×¤Ê¥×¥í¥°¥é¥à¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¡£ **¥×¥í¥°¥é¥àÆâÍÆ¡Ê¥Þ¥¹¥¿¡¼Â¦¡Ë [#s7550c86] -´Ø¿ô¤ä¥µ¥Ö¥ë¡¼¥Á¥ó¤òÍѤ¤¤Æ¡¢µ÷Î¥¡¦³ÑÅÙ¤ò°ú¿ô¤È¤¹¤ë¥×¥í¥°¥é¥à¤Ë¤·¤Æ¡¢Ê¬¤«¤ê¤ä¤¹¤¯¤Ê¤ë¤è¤¦¤Ë¤·¤¿¡£ -¥µ¡¼¥Ü¥â¡¼¥¿¡¼¤Îµ¡Ç½¤ò»È¤¦¤³¤È¤Ç¡¢ÅÅÃÓ»ÄÎ̤αƶÁ¤ò¼õ¤±¤Ê¤¤¤è¤¦¤Ë¤·¤¿¡£ ËÜÂΦ¤ÎNXT¤Ç¤Ï¥¿¥¤¥ä¤È¥Ü¡¼¥ë¤ò¹ß¤í¤¹µ¡¹½¤Î¥â¡¼¥¿¤òÀ©¸æ¤¹¤ë¡£ #define CONN 1 #define SIGNALON 1 #define OPEN_SPEED 15 #define OPEN OnFwd(OUT_A,OPEN_SPEED);Wait(800);Off(OUT_A); #define CLOSE OnRev(OUT_A,OPEN_SPEED);Wait(1300);Off(OUT_A); #define SPEED_H 70 #define SPEED_L 50 const float diameter = 5.6; //¥¿¥¤¥ä¤Îľ·Â¡ÊÑ¡Ë const float track = 10.5; //¥¿¥¤¥ä¤Î¥È¥ì¥Ã¥ÉÉý¡ÊÑ¡Ë const float pi = 3.1415; //±ß¼þΨ float GetAngle_turn(float a) //µá¤á¤ëËÜÂΤβóž³Ñ¤«¤é¥¿¥¤¥ä¤Î²óž³Ñ¤òµá¤á¤ë´Ø¿ô { float ang = (a*track)/diameter; return ang; } float GetAngle_go(float a) //µá¤á¤ë°ÜÆ°µ÷Î¥¤«¤é¥¿¥¤¥ä¤Î²óž³Ñ¤òµá¤á¤ë´Ø¿ô { float ang = a/(diameter*pi)*360.0; return ang; } sub angle_turn_L(float t) //º¸¤ËtÅÙ²óž { int angle_turn_L = GetAngle_turn(t); RotateMotorEx(OUT_BC,SPEED_H,angle_turn_L,-100,true,true);//P37 Off(OUT_BC); } sub angle_turn_R(float t) //±¦¤ËtÅÙ²óž { int angle_turn_R = GetAngle_turn(t); RotateMotorEx(OUT_BC,SPEED_H,angle_turn_R,100,true,true);//P37 Off(OUT_BC); } sub dist_go_F(float t) //Á°¤Ët¥»¥ó¥Á¿Ê¤à { int angle_go_F = GetAngle_go(t); RotateMotorEx(OUT_BC,SPEED_H,angle_go_F,0,true,true); Off(OUT_BC); } sub dist_go_R(float t) //¸å¤í¤Ët¥»¥ó¥Á¿Ê¤à { int angle_go_R = GetAngle_go(t); RotateMotorEx(OUT_BC,-SPEED_H,angle_go_R,0,true,true); Off(OUT_BC); } task main() { dist_go_F(57.0); //¥³¥Ã¥×¤ò¼è¤ë¥Ü¡¼¥ëÅëºÜ¤Î¿®¹æ¤òÁ÷¤ë SendRemoteNumber(CONN, MAILBOX1, SIGNALON); Wait(9000); angle_turn_R(150.0); dist_go_F(40.0); //¥³¥Ã¥×¤ò¼è¤ë¥Ü¡¼¥ëÅëºÜ¤Î¿®¹æ¤òÁ÷¤ë SendRemoteNumber(CONN, MAILBOX1, SIGNALON); Wait(9000); //ȿž¤·¤Æ dist_go_R(5.0); angle_turn_R(190.0); dist_go_R(20.0); //¥Ü¡¼¥ë¤òÃÖ¤¯ OPEN; Wait(1000); CLOSE; dist_go_F(50.0); //ȿž¤·¤Æ dist_go_R(20.0); angle_turn_R(220.0); //¥³¥Ã¥×¤Þ¤Ç¶á¤Å¤¯ dist_go_R(33.0); //¥Ü¡¼¥ë¤òÃÖ¤¯¿®¹æ¤òÁ÷¤ë OPEN; Wait(1000); CLOSE; //Î¥¤ì¤ë dist_go_F(20.0); } **¥×¥í¥°¥é¥àÆâÍÆ¡Ê¥¹¥ì¡¼¥Ö¦¡Ë [#y89872fa] ¥¹¥ì¡¼¥Ö¦¤ÎNXT¤Ç¤Ï¥¢¡¼¥à¤Î³«ÊĤ侺¹ß¤òÀ©¸æ¤¹¤ë #define SIGNALON 1 #define ARM_TIME1 1000¡¡ //¥¢¡¼¥à¤Î³«ÊÄ»þ´Ö£± #define ARM_TIME2 2000 //¥¢¡¼¥à¤Î³«ÊÄ»þ´Ö£² #define ARM_SPEED1 10 //¥¢¡¼¥à¤Î³«ÊÄ¥¹¥Ô¡¼¥É£± #define ARM_SPEED2 50 //¥¢¡¼¥à¤Î³«ÊÄ¥¹¥Ô¡¼¥É£² #define UP_TIME 2000 //¥¢¡¼¥à¤ò¾å¤²¤ë»þ´Ö #define UP_SPEED 50 //¥¢¡¼¥à¤ò¾å¤²¤ë¥¹¥Ô¡¼¥É #define DOWN_TIME 1800 //¥¢¡¼¥à¤ò²¼¤²¤ë»þ´Ö #define DOWN_SPEED 20 //¥¢¡¼¥à¤ò²¼¤²¤ë¥¹¥Ô¡¼¥É task main() { int msg; //¼õ¤±¼è¤Ã¤¿Ãͤò³ÊǼ¤¹¤ëÊÑ¿ô while(true){ ReceiveRemoteNumber(MAILBOX1, true, msg); //MAILBOX1¤ÎÃͤò¼õ¤±¼è¤êmsg¤Ë³ÊǼ if(msg==SIGNALON){ OnFwd(OUT_C,DOWN_SPEED);Wait(DOWN_TIME);Off(OUT_C); //¥¢¡¼¥à¤ò²¼¤²¤ë OnRev(OUT_B,ARM_SPEED2);Wait(ARM_TIME2);Off(OUT_B); //¥¢¡¼¥à¤òÊĤ¸¤ë OnRev(OUT_C,UP_SPEED);OnRev(OUT_B,ARM_SPEED2);Wait(UP_TIME);Off(OUT_C);Off(OUT_B); //¥¢¡¼¥à¤ò¾å¤²¤ë OnFwd(OUT_C,DOWN_SPEED);Wait(DOWN_TIME);Off(OUT_C); //¥¢¡¼¥à¤ò²¼¤²¤ë OnFwd(OUT_B,ARM_SPEED1);Wait(ARM_TIME1);Off(OUT_B); //¥¢¡¼¥à¤ò³«¤¯ ARM_UP2 OnRev(OUT_C,UP_SPEED);Wait(450);Off(OUT_C); //¥¢¡¼¥à¤òÄê°ÌÃÖ¤ËÌ᤹ }else{ Off(OUT_BC); } } } *È¿¾Ê¡¦¹Í»¡ [#k4163363] #ref(./1423658973030.jpg,100%) Îɤ¤µ¡¹½¤òºî¤ë¤³¤È¤¬¤Ç¤¤¿¡£¤·¤«¤·¡¢ÁȾå¤ê¤Ï¾¯¤·ÌµÍý¤¬¤«¤µ¤ó¤Ç¤¤¤ë¤è¤¦¤Ë»×¤¨¤¿¡£ Ķ²»ÇÈ¥»¥ó¥µ¤Î¿ôÃͤ¬°ÂÄꤷ¤Ê¤¤Íýͳ¤ò²òÌÀ¤·¡¢²þÁ±¤¹¤ë¤Þ¤Ç¤Ë»ê¤ë»ö¤¬¤Ç¤¤Ê¤«¤Ã¤¿¡£ ¥»¥ó¥µ¤Î¼è¤êÉÕ¤±°ÌÃ֤䡢¥»¥ó¥µ¤ÎÁ°¤Þ¤ÇÈô¤Ó½Ð¤¿µ¡¹½¤¬¡¢°ÂÄꤷ¤¿¿ôÃͤò¼è¤ì¤Ê¤«¤Ã¤¿¸¶°ø¤Ç¤Ï¤Ê¤¤¤«¤È¹Í¤¨¤é¤ì¤ë ¥»¥ó¥µ¤Î¼è¤êÉÕ¤±°ÌÃ֤䡢¥»¥ó¥µ¤ÎÁ°¤Þ¤ÇÈô¤Ó½Ð¤¿µ¡¹½¤¬¡¢°ÂÄꤷ¤¿¿ôÃͤò¼è¤ì¤Ê¤«¤Ã¤¿¸¶°ø¤Ç¤Ï¤Ê¤¤¤«¤È¹Í¤¨¤é¤ì¤ë¡£ Ķ²»ÇÈ¥»¥ó¥µ¤òÍѤ¤¤¿¾ì¹ç¡¢°Ê²¼¤Î¤è¤¦¤Ê¥×¥í¥°¥é¥à¤òÁȤ߹þ¤ó¤Ç¤¤¤¿¤¬¡¢³°¤µ¤¶¤ë¤òÆÀ¤Ê¤¯¤Ê¤Ã¤¿ Ķ²»ÇÈ¥»¥ó¥µ¤òÍѤ¤¤¿¾ì¹ç¡¢°Ê²¼¤Î¤è¤¦¤Ê¥×¥í¥°¥é¥à¤òÁȤ߹þ¤ó¤Ç¤¤¤¿¤¬¡¢³°¤µ¤¶¤ë¤òÆÀ¤Ê¤¯¤Ê¤Ã¤¿¡£ const float arm = 21.0; //¥¢¡¼¥àµ÷Î¥ int catch_searchDirection(long ang) //¸½ºß¤ÎÊý¸þ¤òÃæ¿´¤ËangÅÙ¤ÎÈϰϤÇõ¤·¾ã³²Êª¤Þ¤Ç¤Îµ÷Î¥¤òÊÖ¤¹ { long angle, tacho_min=0, tacho_corr; int d_min; d_min = 300; //²¾¤ÎºÇ¾®ÃÍ angle = (track/diameter)*ang; //Àû²ó³ÑÅÙ¤«¤é¥¿¥¤¥ä¤Î²óž¤ò·×»» angle_turn_R(ang/2); //»ØÄꤵ¤ì¤¿³ÑÅÙ¤ÎȾʬ¤òÀû²ó ResetTachoCount(OUT_BC); //³ÑÅٷ׬¤ò¥ê¥»¥Ã¥È OnFwdSync(OUT_BC, SPEED_L, -100); //Ⱦ»þ·×²ó¤ê¤ËÀû²ó while(MotorTachoCount(OUT_B) <= angle){ if(SensorUS(S4) < d_min){ d_min = SensorUS(S4); //²¾¤ÎºÇ¾®Ãͤò¹¹¿· tacho_min = MotorTachoCount(OUT_B); } } OnFwdSyncEx(OUT_BC, SPEED_L, 100, RESET_NONE); until(MotorTachoCount(OUT_B)<=tacho_min||SensorUS(S4)<=d_min); Off(OUT_BC); Wait(500); return d_min; } task main() { SetSensorLowspeed(S2); SetSensorLowspeed(S4); int d; //¥»¥ó¥µ¤È¤Îµ÷Î¥ÊÑ¿ô //Êý¸þ¤òõ¤·¤¿¤¢¤È¡¢ÏӤ΍µÁ°¤ÇÄä»ß d = catch_searchDirection(120.0); dist_go_R(arm-d); }