[[2014b/Member]] #contents *¤Ï¤¸¤á¤Ë [#o4d8a879] ²ÝÂê3¤Ï¥¹¥¿¡¼¥ÈÃÏÅÀ¤«¤é¥í¥Ü¥Ã¥È¤ò¿Ê¤á¡¢2¤Ä¤Î»æ¥³¥Ã¥×¤Ë¤½¤ì¤¾¤ìÆþ¤Ã¤Æ¤¤¤ë2¸Ä¤Î¥Ü¡¼¥ë¤òÆþ¤ìÂؤ¨¤ë¤È¤¤¤¦¤â¤Î¤Ç¤¢¤ë¡£ ([[2014ǯ¸å´ü/²ÝÂê3:http://yakushi.shinshu-u.ac.jp/robotics/?2014b%2FMission3]]»²¾È) ¡¡»ä¤¿¤Á¤ÎÈɤΥá¥ó¥Ð¡¼¤Ï¡¢ -[[edaeda:http://yakushi.shinshu-u.ac.jp/robotics/?2014b%2FMember%2Fedaeda%2FMission3]] -[[knee:http://yakushi.shinshu-u.ac.jp/robotics/?2014b%2FMember%2Fknee%2FMission3]] - kuryu ¤È»ä¤Î4¿Í¤Ç¤¢¤ë¡£ »ä¤¿¤Á¤ÎÈɤιͰƤϡ¢¥¢¡¼¥à¤È¥ì¡¼¥ë¤òºî¤ê¡¢¥¢¡¼¥à¤ò»È¤Ã¤Æ£´¤Ä¤Î¥Ü¡¼¥ë¤ò¥ì¡¼¥ë¤Ë¤Î¤»¡¢¥ì¡¼¥ë¤ò·¹¤«¤»¤ë¤³¤È¤Ç»æ¥³¥Ã¥×¤Ë¥Ü¡¼¥ë¤òÆþ¤ì¤ë¤È¤¤¤¦¤â¤Î¤Ç¤¢¤ë¡£ *¥í¥Ü¥Ã¥È¡¢¤Þ¤¿¤Ï¤½¤ÎÆ°ºî¤ÎÀâÌÀ [#h9193c48] **Á´ÂÎ [#ne8db113] #ref(2014b/Member/arisyka/Mission3/IMG_3870.JPG,20%) ¼Ì¿¿¤Î¤è¤¦¤Ê¹½Â¤¤Ç¤¢¤ë¡£ ±¦¤Èº¸¤Î¥¿¥¤¥ä¤ÎÉé²Ù¤¬¤½¤ì¤¾¤ì°Û¤Ê¤ë¤¿¤á¡¢¥×¥í¥°¥é¥à¤Çº¸±¦¤Î¥¿¥¤¥ä¤Î½ÐÎϤòÊѤ¨¤ë¤³¤È¤Çľ¿Ê¤ä²óž¡¢Àû²ó¤ò¥¹¥à¡¼¥º¤Ë¹Ô¤ï¤»¤ë¡£ **¥¢¡¼¥à [#y4bd3434] #ref(2014b/Member/arisyka/Mission3/IMG_3869.gif,30%) ¾å¤Î¼Ì¿¿¤ÎÀ֤ǰϤޤ줿Éôʬ¡£ 1¤Î¥â¡¼¥¿¡¼¤Ç¥¢¡¼¥àÁ´ÂΤò¾å¤²²¼¤²¤·¡¢2¤Î¥â¡¼¥¿¡¼¤Ç¥¢¡¼¥à¤Î¶´¤àÆ°¤¤òÁàºî¤¹¤ë¡£ ¥¢¡¼¥à¤òÆ°¤«¤¹¤¿¤á¤Ë»È¤Ã¤¿ÄêµÁ¤Ï°Ê²¼¤Î¤è¤¦¤Ç¤¢¤ë¡£ #define SPEED1 45 #define SPEED2 60 #define SPEED3 10 #define SPEED4 30 #define SPEED5 50 #define SPEED6 25 float GetAngle(float d) {¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¿Ê¤àµ÷Î¥¤ò·×»»¤¹¤ë const float diameter=5.45;¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¥¿¥¤¥ä¤Îľ·Â const float pi=3.1415;¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//±ß¼þΨ float ang = d/(diameter*pi)*360.0; return ang; //³ÑÅÙ¤ò·×»»¤¹¤ë } ¤³¤³¤ÎÄêµÁ¤Ï¥¢¡¼¥àÁ´ÂΤÎÆ°¤¤òÄêµÁ¤·¤Æ¤¤¤ë¡£(¾å¤Î¼Ì¿¿¤Î¡¤Î¥â¡¼¥¿¡¼¤Ë¤è¤ëÆ°¤) #define DOWN RotateMotor(OUT_A,SPEED3,105);¡¡¡¡//¥¢¡¼¥àÁ´ÂΤò²¼¤²¤ë #define UP RotateMotor(OUT_A,-SPEED5,105); ¡¡//¥¢¡¼¥àÁ´ÂΤò¾å¤²¤ë #define LDown RotateMotor(OUT_A,SPEED3,25);¡¡¡¡ #define LUp RotateMotor(OUT_A,-SPEED2,25); #define Little LDown;Wait(2000);LUp; //¥Ü¡¼¥ë¤ò¥ì¡¼¥ë¤Ë³Î¼Â¤Ë¤Î¤»¤ë¤¿¤á¤ÎÆ°¤ #ref(2014b/Member/arisyka/Mission3/arm¥ë¡¼¥×2.gif,45%) ¤³¤³¤ÎÄêµÁ¤Ï¥¢¡¼¥à¤Î¥Ï¥µ¥ßÉôʬ¤ÎÆ°¤¤òÄêµÁ¤·¤Æ¤¤¤ë¡£(¾å¤Î¼Ì¿¿¤Î¢¤Î¥â¡¼¥¿¡¼¤Ë¤è¤ëÆ°¤) #define Catch RotateMotor(OUT_B,-SPEED4,105);¡¡¡¡//¥¢¡¼¥à¤Ç¤Ä¤«¤à #define Separate RotateMotor(OUT_B,SPEED4,105); //¥¢¡¼¥à¤òÎ¥¤¹ #ref(2014b/Member/arisyka/Mission3/catch&separate.gif,40%) **¥ì¡¼¥ë [#k920454a] #ref(2014b/Member/arisyka/Mission3/IMG_3873.gif,30%) ¾å¤Î¼Ì¿¿¤ÎÀ֤ǰϤޤ줿Éôʬ¡£¤Þ¤¿¡¢Üô¿§¤Ç°Ï¤Þ¤ì¤¿Éôʬ¤Ï¥Ü¡¼¥ë¤ò»æ¥³¥Ã¥×¤ËÆþ¤ì¤ëºÝ¤Ë¡¢»æ¥³¥Ã¥×¤¬Åݤì¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Î¥¹¥È¥Ã¥Ñ¡¼¤Ç¤¢¤ë¡£Åݤ¹³ÑÅÙ¤òÄ´À°¤¹¤ë¤³¤È¤Ç»æ¥³¥Ã¥×¤ËÆþ¤ì¤ë¥Ü¡¼¥ë¤Î¿ô¤òÊѤ¨¤ë¡£ ¥ì¡¼¥ë¤òÆ°¤«¤¹¤¿¤á¤Ë»È¤Ã¤¿Æ°ºî¤Ï¾åµ¤Ë½ñ¤¤¤¿¥¢¡¼¥à¤ÎÄêµÁ¤ÈƱ¤¸¤â¤Î¤ò»ÈÍѤ·¤¿¡£ #define Into1 RotateMotor(OUT_C,SPEED3,20); ¡¡¡¡//¥Ü¡¼¥ë¤òÆþ¤ì¤ë(1²óÌÜ) #define Return1 RotateMotor(OUT_C,-SPEED3,25);¡¡ //¥ì¡¼¥ë¤òÌ᤹ #define Into2 RotateMotor(OUT_C,SPEED4,30);¡¡¡¡¡¡//¥Ü¡¼¥ë¤òÆþ¤ì¤ë(2²óÌÜ) #define Return2 RotateMotor(OUT_C,-SPEED4,15);¡¡ //¥ì¡¼¥ë¤òÌ᤹ *¥×¥í¥°¥é¥à [#ec7cd753] º£²ó»ÈÍѤ¹¤ë¥×¥í¥°¥é¥à¤Ï¾åµ¤Ë¤â¼¨¤·¤¿¥¢¡¼¥àŽ¥¥ì¡¼¥ë¤ÎÆ°ºî¤Î¥×¥í¥°¥é¥à¤Î¾¤Ë¡¢Ä¶²»ÇÈ¥»¥ó¥µ¤òÍøÍѤ·¤¿Æ°ºî¤Î¥×¥í¥°¥é¥à¡¢Bluetooth¤òÍøÍѤ·¤¿¥×¥í¥°¥é¥à¤Ç¤¢¤ë¡£ **Ķ²»ÇÈ¥»¥ó¥µ¤òÍøÍѤ·¤¿Æ°¤ [#l3e463dd] ¤³¤³¤Ç¾Ò²ð¤·¤Æ¤¤¤ë¥×¥í¥°¥é¥à¤ÏÇÛ¤é¤ì¤¿¥×¥ê¥ó¥È¤Ë½ñ¤«¤ì¤Æ¤¤¤ë»²¹Í¤Î¥×¥í¥°¥é¥à¤È¤Û¤ÜƱ¤¸¤â¤Î¤Ç¤¢¤ë¡£ #define SPEED 50 #define SPEED_SLOW 40 #define turn_right_here OnFwd(OUT_B,SPEED_SLOW);OnFwd(OUT_C,-SPEED_SLOW); //±¦Àû²ó float GetAngle(float d) {¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¿Ê¤àµ÷Î¥¤ò·×»»¤¹¤ë const float diameter=5.45;¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¥¿¥¤¥ä¤Îľ·Â const float pi=3.1415;¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//±ß¼þΨ float ang = d/(diameter*pi)*360.0; return ang; //³ÑÅÙ¤ò·×»»¤¹¤ë } const float diameter = 5.45;¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ const float track = 15;¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¥¿¥¤¥ä¤Î¥È¥ì¥Ã¥ÉÉý 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,tacho_corr; 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);¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//²¾¤ÎºÇ¾®Ãͤò¹¹¿· PlaySound(SOUND_UP); 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() { int d = searchDirection(120);¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¸½ºß¤ÎÊý¸þ¤òÃæ¿´¤Ë 120 ÅÙ¤ÎÈϰϤÇõ¤·¡¢¾ã³²Êª¤Þ¤Ç¤Îµ÷Î¥¤òÊÖ¤¹ if(d > ¡û){ fwdDist(d-¡û);}¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ else {fwdDist(d-¡û);}¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//»æ¥³¥Ã¥×¤ÎÊý¸þ¤òõ¤·¤¿¸å²»¤òÌĤ餷¡¢Á°¸å¤ÎÆ°¤¤Ç¡ûѼêÁ°¤ÇÄä»ß PlaySound(SOUND_UP); } **Bluetooth¤òÍøÍѤ·¤¿¥×¥í¥°¥é¥à [#x935b665] 2¤Ä¤ÎNXC¤¬Bluetooth¤Ç¤Ä¤Ê¤¬¤Ã¤Æ¤¤¤ë¾õÂ֤Ǥ¢¤ë¤³¤È¤òÁ°Äó¤ÇÏäò¿Ê¤á¤ë¡£ ¤³¤³¤Ç¤Ï¥Þ¥¹¥¿¡¼Â¦¤«¤é¥¹¥ì¡¼¥Ö¦¤Ë»Ø¼¨¤ò½Ð¤¹¥×¥í¥°¥é¥à¤ò¾Ò²ð¤¹¤ë¡£¡¡ #define CONN 1 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¥¹¥ì¡¼¥Ö(ÄÌ¿®Áê¼ê)¤ÎÀܳÈÖ¹æ task main() { until (BluetoothStatus(CONN) == NO_ERR);¡¡¡¡//Àܳ¤Ç¤¤ë¤Þ¤ÇÂÔµ¡ //¥Þ¥¹¥¿¡¼Â¦¤Î¥×¥í¥°¥é¥à// RemoteStartProgram(CONN, "¡Á.rxe");¡¡¡¡//¥¹¥ì¡¼¥Ö¤Î¡Ö¡Á¡×¤Î¥×¥í¥°¥é¥à¤òµ¯Æ°¡¡ µÕ¤Ë¥¹¥ì¡¼¥Ö¦¤«¤é¥Þ¥¹¥¿¡¼Â¦¤Ë»Ø¼¨¤ò½Ð¤¹¾ì¹ç¤ÏÀܳÈÖ¹æ¤ò0¤ÈÊѹ¹¤¹¤ë¡£ **¶ìÏ«¤·¤¿ÅÀ¡¦²þÁ±ÅÀ [#l23eb6c6] **¥¹¥ì¡¼¥Ö¦ [#p93594c5] **¥Þ¥¹¥¿¡¼Â¦ [#wa6a612a] *´¶ÁÛ [#h6ea9121] *¥Þ¥¹¥¿¡¼Â¦(¥³¥Ô¡¼ÍÑ) [#hacfc6a7] #define CONN 1 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¥¹¥ì¡¼¥Ö(ÄÌ¿®Áê¼ê)¤ÎÀܳÈÖ¹æ #define SPEED 50 #define SPEED_SLOW 40 #define turn_right_here OnFwd(OUT_B,SPEED_SLOW);OnFwd(OUT_C,-SPEED_SLOW); //±¦Àû²ó float GetAngle(float d) {¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¿Ê¤àµ÷Î¥¤ò·×»»¤¹¤ë const float diameter=5.45;¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¥¿¥¤¥ä¤Îľ·Â const float pi=3.1415;¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//±ß¼þΨ float ang = d/(diameter*pi)*360.0; return ang; //³ÑÅÙ¤ò·×»»¤¹¤ë } const float diameter = 5.45;¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ const float track = 15;¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¥¿¥¤¥ä¤Î¥È¥ì¥Ã¥ÉÉý 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,tacho_corr; 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);¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//²¾¤ÎºÇ¾®Ãͤò¹¹¿· PlaySound(SOUND_UP); 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; } #define anglemove2 int angle = GetAngle(20);RotateMotor(OUT_BC,-SPEED,angle);OnFwd(OUT_B,-SPEED);OnFwd(OUT_C,SPEED);Wait(1500);angle += GetAngle(60);RotateMotor(OUT_BC,SPEED,angle);int d = searchDirection(120);if(d > 15){ fwdDist(d-15.0);}else {fwdDist(d-15);}PlaySound(SOUND_UP);turn_right_here;Wait(200); #define anglemove3 int angle = GetAngle(20);RotateMotor(OUT_BC,-SPEED,angle);OnFwd(OUT_B,-SPEED);OnFwd(OUT_C,SPEED);Wait(1500);angle += GetAngle(60);RotateMotor(OUT_BC,SPEED,angle);int d = searchDirection(120);turn_right_here;Wait(600);if(d > 15){ fwdDist(d);}else {fwdDist(d);}PlaySound(SOUND_UP); #define anglemove4 int angle = GetAngle(20);RotateMotor(OUT_BC,-SPEED,angle);OnFwd(OUT_B,-SPEED);OnFwd(OUT_C,SPEED);Wait(1500);angle += GetAngle(60);RotateMotor(OUT_BC,SPEED,angle);int d = searchDirection(120);turn_right_here;Wait(600);if(d > 15){ fwdDist(d);}else {fwdDist(d);}PlaySound(SOUND_UP); #define count 7 #define sound PlaySound(SOUND_CLICK); **angle move1 [#d59f8a17] task main() { SetSensorLowspeed(S1);¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ until (BluetoothStatus(CONN) == NO_ERR);¡¡¡¡//Àܳ¤Ç¤¤ë¤Þ¤ÇÂÔµ¡ RotateMotor(OUT_BC,50,GetAngle(50));¡¡¡¡¡¡¡¡//50ÑÁ°¿Ê OnFwd(OUT_B,30); OnRev(OUT_C,50);¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//±¦¤Ë90ÅÙÀû²ó Wait(1500); RotateMotor(OUT_BC,50,GetAngle(30));¡¡¡¡¡¡¡¡//30ÑÁ°¿Ê int d = searchDirection(120); if(d > 15){ fwdDist(d-15.0);}¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ else {fwdDist(d-15);}¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//»æ¥³¥Ã¥×¤ÎÊý¸þ¤òõ¤·¤¿¸å²»¤òÌĤ餷¡¢Á°¸å¤ÎÆ°¤¤Ç15ѼêÁ°¤ÇÄä»ß PlaySound(SOUND_UP); turn_right_here; Wait(200); RemoteStartProgram(CONN, "arm time1.rxe");¡¡¡¡//¥¹¥ì¡¼¥Ö¤Î¡Öarm time1¡×¤Î¥×¥í¥°¥é¥à¤òµ¯Æ°¡¡ } **angle move2 [#j2aa6be8] task main() { SetSensorLowspeed(S1); until (BluetoothStatus(CONN) == NO_ERR); int angle = GetAngle(20); RotateMotor(OUT_BC,-SPEED,angle); OnFwd(OUT_B,-SPEED); OnFwd(OUT_C,SPEED);¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¸å¤í¤Ë20Ѹå¿Ê¤·¤¿¸å¡¢180ÅÙÀû²ó¤·¤Æ60ÑÁ°¿Ê Wait(1500); angle += GetAngle(60); RotateMotor(OUT_BC,SPEED,angle); int d = searchDirection(120); if(d > 15){ fwdDist(d-15.0);} else {fwdDist(d-15);} PlaySound(SOUND_UP); turn_right_here; Wait(200); RemoteStartProgram(CONN, "arm time2.rxe"); } **angle move3 [#h9f89ef8] task main() { SetSensorLowspeed(S1); until (BluetoothStatus(CONN) == NO_ERR); int angle = GetAngle(20); RotateMotor(OUT_BC,-SPEED,angle); OnFwd(OUT_B,-SPEED); OnFwd(OUT_C,SPEED); Wait(1500); angle += GetAngle(60); RotateMotor(OUT_BC,SPEED,angle); int d = searchDirection(120); turn_right_here; Wait(600); if(d > 15){ fwdDist(d);} else {fwdDist(d);} PlaySound(SOUND_UP); RemoteStartProgram(CONN, "rail1.rxe"); } **angle move4 [#r0e5655e] task main() { SetSensorLowspeed(S1); until (BluetoothStatus(CONN) == NO_ERR); int angle = GetAngle(20); RotateMotor(OUT_BC,-SPEED,angle); OnFwd(OUT_B,-SPEED); OnFwd(OUT_C,SPEED); Wait(1500); angle += GetAngle(60); RotateMotor(OUT_BC,SPEED,angle); int d = searchDirection(120); turn_right_here; Wait(600); if(d > 15){ fwdDist(d);} else {fwdDist(d);} PlaySound(SOUND_UP); RemoteStartProgram(CONN, "rail2.rxe"); } **move [#g2dac7b9] task main() { SetSensorLowspeed(S1); until (BluetoothStatus(CONN) == NO_ERR); int nOnline=0; RotateMotor(OUT_BC,50,GetAngle(50)); OnFwd(OUT_B,30); OnRev(OUT_C,50); Wait(3000); RotateMotor(OUT_BC,50,GetAngle(50)); int d = searchDirection(120); if(d > 15){ fwdDist(d-15.0);} else {fwdDist(d-15);} PlaySound(SOUND_UP); turn_right_here; Wait(200); RemoteStartProgram(CONN, "arm time1.rxe"); if(nOnline=0){ if(SensorUS(S3)<count){ sound; Wait(10000); nOnline++; int angle = GetAngle(20); RotateMotor(OUT_BC,-SPEED,angle); OnFwd(OUT_B,-SPEED); OnFwd(OUT_C,SPEED); Wait(1500); angle += GetAngle(60); RotateMotor(OUT_BC,SPEED,angle); int d = searchDirection(120); if(d > 15){ fwdDist(d-15.0);} else {fwdDist(d-15);} PlaySound(SOUND_UP); turn_right_here; Wait(200); RemoteStartProgram(CONN, "arm time2.rxe"); } } else if(nOnline=1){ if(SensorUS(S3)<count){ sound; nOnline++; } } else if(nOnline=2){ int angle = GetAngle(20); RotateMotor(OUT_BC,-SPEED,angle); OnFwd(OUT_B,-SPEED); OnFwd(OUT_C,SPEED); Wait(1500); angle += GetAngle(60); RotateMotor(OUT_BC,SPEED,angle); int d = searchDirection(120); turn_right_here; Wait(600); if(d > 15){ fwdDist(d);} else {fwdDist(d);} PlaySound(SOUND_UP); RemoteStartProgram(CONN, "rail1.rxe"); if(SensorUS(S3)<count){ sound; Wait(10000); nOnline++; } } else if(nOnline=3){ int angle = GetAngle(20); RotateMotor(OUT_BC,-SPEED,angle); OnFwd(OUT_B,-SPEED); OnFwd(OUT_C,SPEED); Wait(1500); angle += GetAngle(60); RotateMotor(OUT_BC,SPEED,angle); int d = searchDirection(120); turn_right_here; Wait(600); if(d > 15){ fwdDist(d);} else {fwdDist(d);} PlaySound(SOUND_UP); RemoteStartProgram(CONN, "rail2.rxe"); } } **ex [#f70778d9] task main() { SetSensorLowspeed(S1); until (BluetoothStatus(CONN) == NO_ERR); OnFwd(OUT_BC,50); Wait(5500); turn_right_here; Wait(2500); RemoteStartProgram(CONN, "arm time.rxe"); Off(OUT_BC); Wait(10000); Wait(10000); Wait(10000); int angle1 = GetAngle(20); RotateMotor(OUT_BC,-SPEED,angle1); OnFwd(OUT_B,-SPEED); OnFwd(OUT_C,SPEED); Wait(1500); angle1 += GetAngle(60); RotateMotor(OUT_BC,SPEED,angle1); int d2 = searchDirection(120); if(d2 > 15){ fwdDist(d2-15.0);} else {fwdDist(d2-15);} PlaySound(SOUND_UP); turn_right_here; Wait(200); RemoteStartProgram(CONN, "arm time.rxe"); Off(OUT_BC); Wait(10000); Wait(10000); Wait(10000); int angle2 = GetAngle(20); RotateMotor(OUT_BC,-SPEED,angle2); OnFwd(OUT_B,-SPEED); OnFwd(OUT_C,SPEED); Wait(1500); angle2 += GetAngle(60); RotateMotor(OUT_BC,SPEED,angle2); int d3 = searchDirection(120); turn_right_here; Wait(600); if(d3 > 15){ fwdDist(d3);} else {fwdDist(d3);} PlaySound(SOUND_UP); RemoteStartProgram(CONN, "rail1.rxe"); Off(OUT_BC); Wait(10000); Wait(10000); Wait(10000); int angle3 = GetAngle(20); RotateMotor(OUT_BC,-SPEED,angle3); OnFwd(OUT_B,-SPEED); OnFwd(OUT_C,SPEED); Wait(1500); angle3 += GetAngle(60); RotateMotor(OUT_BC,SPEED,angle3); int d4 = searchDirection(120); turn_right_here; Wait(600); if(d4 > 15){ fwdDist(d4);} else {fwdDist(d4);} PlaySound(SOUND_UP); RemoteStartProgram(CONN, "rail2.rxe"); } **ex2 [#gb9319b5] task main() { SetSensorLowspeed(S1); until (BluetoothStatus(CONN) == NO_ERR); OnFwd(OUT_BC,50); Wait(5500); turn_right_here; Wait(2000); RemoteStartProgram(CONN, "arm time.rxe"); Off(OUT_BC); Wait(10000); Wait(10000); OnFwd(OUT_B,-SPEED); OnFwd(OUT_C,SPEED); Wait(700); OnFwd(OUT_BC,50); Wait(4000); RemoteStartProgram(CONN, "rail.rxe"); Off(OUT_BC); } *¥¹¥ì¡¼¥Ö¦(¥³¥Ô¡¼ÍÑ) [#g12768a7] **arm time [#dd328ea5] #define SPEED1 45 #define SPEED2 60 #define SPEED3 10 #define SPEED4 30 #define SPEED5 50 #define SPEED6 25 float GetAngle(float d) { const float diameter=5.45; const float pi=3.1415; float ang = d/(diameter*pi)*360.0; return ang; } #define DOWN RotateMotor(OUT_A,SPEED3,105); #define UP RotateMotor(OUT_A,-SPEED5,105); //¥¢¡¼¥àÁ´ÂΤÎÆ°¤ #define LDown RotateMotor(OUT_A,SPEED3,25); #define LUp RotateMotor(OUT_A,-SPEED2,25); #define Catch RotateMotor(OUT_B,-SPEED4,105); #define Separate RotateMotor(OUT_B,SPEED4,105); //¥¢¡¼¥à¤ÎÆ°¤ task main () { OnFwd(OUT_A,10); Wait(1500); Catch; ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¥¢¡¼¥àÁ´ÂΤò²¼¤²¡¢»æ¥³¥Ã¥×¤ò¤Ä¤«¤à OnRev(OUT_A,50); Wait(3500);¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¥¢¡¼¥àÁ´ÂΤò¾å¤²¡¢¥ì¡¼¥ë¤Î¾å¤Ë¥Ü¡¼¥ë¤ò¤Î¤»¤ë Wait(2000); OnFwd(OUT_A,10);¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Wait(3500);¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¥¢¡¼¥àÁ´ÂΤò²¼¤²¡¢»æ¥³¥Ã¥×¤òÃÖ¤¯ Separate; OnRev(OUT_A,35); Wait(2000); ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¥¢¡¼¥àÁ´ÂΤò¾å¤²¤ë(¸µ¤Î°ÌÃÖ¤ËÌ᤹) Wait(500); } **rail [#u382c2a1] #define SPEED1 45 #define SPEED2 60 #define SPEED3 10 #define SPEED4 30 #define SPEED5 50 float GetAngle(float d) { const float diameter=5.45; const float pi=3.1415; float ang = d/(diameter*pi)*360.0; return ang; } #define Into1 RotateMotor(OUT_C,SPEED3,20); //¥Ü¡¼¥ë¤òÆþ¤ì¤ë #define Return1 RotateMotor(OUT_C,-SPEED3,25); #define Into2 RotateMotor(OUT_C,SPEED4,30); #define Return2 RotateMotor(OUT_C,-SPEED4,15); task main(){ OnFwd(OUT_C,15); Wait(1000); Wait(3000); ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¥ì¡¼¥ë¤ò·¹¤±¡¢4¤Ä¤ÎÆâ2¤Ä¤À¤±¥Ü¡¼¥ë¤ò»æ¥³¥Ã¥×¤ËÆþ¤ì¤ë OnRev(OUT_C,30); Wait(500); Wait(5000); OnFwd(OUT_C,25); Wait(1000); Wait(3000); ¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¥ì¡¼¥ë¤ò·¹¤±¡¢¥ì¡¼¥ë¤Ë»Ä¤Ã¤Æ¤¤¤ë¥Ü¡¼¥ë¤ò»æ¥³¥Ã¥×¤ËÆþ¤ì¤ë OnRev(OUT_C,30); Wait(2500); }