2014b/Member/akebono/Mission3
¤ò¥Æ¥ó¥×¥ì¡¼¥È¤Ë¤·¤ÆºîÀ®
[
¥È¥Ã¥×
] [
¿·µ¬
|
°ìÍ÷
|
¸¡º÷
|
ºÇ½ª¹¹¿·
|
¥Ø¥ë¥×
|
¥í¥°¥¤¥ó
]
³«»Ï¹Ô:
#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);
}
½ªÎ»¹Ô:
#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);
}
¥Ú¡¼¥¸Ì¾: