º£²ó¤Î²ÝÂê¤Ë¤Ä¤¤¤Æ¤Ï2019a/Mission3¤ÎÄ̤ê¤Ç¤¢¤ë¡£
»ä¤¿¤Á¤Ï°Ê²¼¤Î¥ë¡¼¥È¤ÇÁö¹Ô¤·¡¢¥Ü¡¼¥ë¤ò±¿È¤¹¤ë¥×¥í¥°¥é¥à¤òºîÀ®¤¹¤ë¤³¤È¤Ë¤·¤¿¡£
A'(½Ðȯ) ¢ª K' ¢ª L'(¥Ü¡¼¥ë¡¤ò¤Ä¤«¤à) ¢ª K' ¢ª J'(¥Ü¡¼¥ë¡±¿È´°Î») ¢ª K' ¢ª M' ¢ª N' ¢ª N ¢ª B ¢ª M ¢ª K ¢ª L(¥Ü¡¼¥ë¢¤ò¤Ä¤«¤à) ¢ª K ¢ª J(¥Ü¡¼¥ë¢¤òÍÆ´ï¤ËÆþ¤ì¤ë¡£ÍÆ´ï¤ò»ý¤Á¾å¤²¤ë¡£) ¢ª C ¢ª B ¢ª N ¢ª C' ¢ª I' (¥Ü¡¼¥ë¢£¤±¿È´°Î»)
º£²ó¤Î¥í¥Ü¥Ã¥È¤Ï£²Âæ¤ÎNXT¤òÄÌ¿®¤·¤Æ¥×¥í¥°¥é¥à¤òÀ©¸æ¤¹¤ë¤Î¤Ç¡¢¡Ö£²Âæ¤ÎNXT¤òÊÌ¡¹¤ËÀ©¸æ¤¹¤ë¡×¤Þ¤¿¤Ï¡Ö£²Âæ¤ÎNXT¤ò°ìÂ⽤µ¤»¤Æ¥í¥Ü¥Ã¥È¤òºî¤ë¡×¤È¤¤¤¦£²¤Ä¤ÎÊý¿Ë¤¬¹Í¤¨¤é¤ì¤ë¤¬»ä¤¿¤Á¤Ï¡¢£²Âæ¤ÎNXT¤ò°ìÂ⽤µ¤»¤Æ¥í¥Ü¥Ã¥È¤òºî¤Ã¤¿¡£¤Þ¤¿¡¢ÍÆ´ïÆâ¤Î¥Ü¡¼¥ë¤ò¤Ä¤«¤à¤Î¤ÏÆñ¤·¤¤¤È¹Í¤¨¤¿¤Î¤Ç¡¢¥Ü¡¼¥ë¤ÎÆþ¤Ã¤¿Íƴ老¤È»ý¤Á¾å¤²¡¢¤Á¤ã¤ÖÂæÊÖ¤·¤Î¤è¤¦¤Ë¤·¤ÆÍÆ´ïÆâ¤Î¥Ü¡¼¥ë¤ò±¿È¤¹¤ë¤³¤È¤Ë¤·¤¿¡£¤½¤ÎºÝ¡¢ÍÆ´ïÆâ¤Î¥Ü¡¼¥ë¤¬¤É¤¦¤·¤Æ¤â¥í¥Ü¥Ã¥È¤Ë¹ß¤ê¤«¤«¤Ã¤Æ¤·¤Þ¤¦¤Î¤Ç¡¢¥í¥Ü¥Ã¥È¤Î¾å¤Ëºä¤òÉÕ¤±¡¢¥Ü¡¼¥ë¤ò¥í¥Ü¥Ã¥È¤Î¾å¤Çž¤¬¤¹¤³¤È¤ÇÍÆ´ïÆâ¤Î¥Ü¡¼¥ë¤ò±¿È¤µ¤»¤ë¤³¤È¤Ë¤·¤¿¡£ ¥Ü¡¼¥ë¡¢¤ò¤Ä¤«¤à¥¢¡¼¥à¤ÈÍÆ´ï¤ò¤Ä¤«¤à¥¢¡¼¥à¤Î·×£²¤Ä¤Î¥¢¡¼¥à¤òºî¤Ã¤¿¡£
¥â¡¼¥¿¡¼¤ò£²¤Ä»ÈÍѤ·¤¿¡££±¤Ä¤Ï¥Ü¡¼¥ë¤ò¤Ä¤«¤ß¡¢¤â¤¦£±¤Ä¤Ï¾å²¼¤ËÆ°¤«¤¹Ìò³ä¤ò¤·¤Æ¤¤¤ë¡£
¥Ü¡¼¥ë¤ò¤Ä¤«¤à¥¢¡¼¥à¤ÈƱ¤¸µ¡¹½¤Ç¤¢¤ë¡£ÍÆ´ï¤òÍî¤È¤µ¤Ê¤¤¤¿¤á¤Ë¥¢¡¼¥à¤Ë¥¿¥¤¥ä¤ò·×£´¤ÄÉÕ¤±¤¿¡£
¥¢¡¼¥à¤ò»ý¤Á¾å¤²¤¿¤È¤¤ÎºÇ¹âÅÀ¤Ë¤Á¤ç¤¦¤Éºä¤¬¤¯¤ë¤è¤¦¤Ë¤·¤¿¡£
¼Ì¿¿¤Ë¤¢¤ë¤è¤¦¤Ë¸÷¥»¥ó¥µ¡¼¤ò£²¤Ä»ÈÍѤ·¤¿¡£
¾å¿Þ¤Î¤è¤¦¤ËÀþ¤ò£²¤Ä¤Î¸÷¥»¥ó¥µ¡¼¤Ç¶´¤ó¤À¡£
¸÷¥»¥ó¥µ¡¼¤Ï¿Þ¤Î¤è¤¦¤ÊÃͤò¤È¤Ã¤¿¡£¤³¤Î£³¤Ä¤ÎÃͤˡ¢£³£¸¤È£µ£³¤Î´Ö¤Î£´£µ¤È£µ£³¤È£¶£¸¤Î¤Î´Ö¤Î£¶£°¤ò²Ã¤¨¤Æ¡¢¸÷¥»¥ó¥µ¡¼¤ÎÃͤò£µÃʳ¬¤Ëʬ¤±¤¿¡£
²ÝÂꣲ¤ÈƱÍͤˣ±¤Ä¤Î¸÷¥»¥ó¥µ¡¼¤òÍѤ¤¤Æ²¼¿Þ¤Î¤è¤¦¤Ë¸÷¥»¥ó¥µ¡¼¤Î¼è¤ëÃͤȥí¥Ü¥Ã¥È¤ÎÆ°¤¤òÂбþ¤µ¤»¤¿¡£
¤¿¤À¤·¡¢¸òº¹ÅÀ¤Ç¤Ï£²¤Ä¤Î¸÷¥»¥ó¥µ¡¼¤¬£³£¸¤È¤Ê¤ë¤Î¤Ç¡¢£²¤Ä¸÷¥»¥ó¥µ¡¼¤¬°ìÄê¤Î»þ´Ö£³£¸¤È¤Ê¤Ã¤¿¤È¤¤Ë»ß¤Þ¤ë¤è¤¦¤Ë¤·¤¿¡£¤Þ¤¿¡¢¤³¤Î»þ´Ö¤òÊѲ½¤µ¤»¤ë¤³¤È¤Ç²¼¿Þ¤Î¤è¤¦¤Ê¾ì½ê¤Ç¤â»ß¤Þ¤ì¤ë¤è¤¦¤Ë¤·¤¿¡£
#define BLACKS 38 #define BLACK 45 #define THRESHOLD 53 #define WHITE 60 #define WHITES 68
#define left_s OnFwd(OUT_A,60);OnRev(OUT_B,60); #define left OnFwd(OUT_A,60);Off(OUT_B); #define right_s OnFwd(OUT_B,60);OnRev(OUT_A,90); #define right OnFwd(OUT_B,60);Off(OUT_A); #define forward OnFwd(OUT_AB,60);
#define CONN 1 #define SIGNALON1 10 #define SIGNALOFF1 11 #define SIGNALON2 20 #define SIGNALOFF2 21 #define SIGNALON3 30 #define SIGNALOFF3 31 #define HALF 1900 #define QUARTER 950
sub follow_line_left() { SetSensorLight(S1); SetSensorLight(S2); long t0=0,t1=0,stop_time=3; while(t1-t0<stop_time){ if((SENSOR_1<BLACKS)&&(SENSOR_2<BLACKS)){ t0=CurrentTick(); forward; until((SENSOR_1<THRESHOLD)&&(SENSOR_2<THRESHOLD)); t1=CurrentTick(); }else if(SENSOR_1<BLACKS){ left_s; }else if(SENSOR_1<BLACK){ left; }else if(SENSOR_1<THRESHOLD){ forward; }else if(SENSOR_1<WHITE){ right; }else if(SENSOR_1<WHITES){ right_s; } } Off(OUT_AB); Wait(1000); }
sub follow_line_right() { SetSensorLight(S1); SetSensorLight(S2); long t0=0,t1=0,stop_time=3; while(t1-t0<stop_time){ if((SENSOR_1<BLACKS)&&(SENSOR_2<BLACKS)){ t0=CurrentTick(); forward; until((SENSOR_1<THRESHOLD)&&(SENSOR_2<THRESHOLD)); t1=CurrentTick(); }else if(SENSOR_2<BLACKS){ right_s; }else if(SENSOR_2<BLACK){ right; }else if(SENSOR_2<THRESHOLD){ forward; }else if(SENSOR_2<WHITE){ left; }else if(SENSOR_2<WHITES){ left_s; } } Off(OUT_AB); Wait(1000); }
sub follow_line_leftT() { SetSensorLight(S1); SetSensorLight(S2); long t0=0,t1=0,stop_time=1; while(t1-t0<stop_time){ if((SENSOR_1<BLACKS)&&(SENSOR_2<BLACKS)){ t0=CurrentTick(); forward; until((SENSOR_1<THRESHOLD)&&(SENSOR_2<THRESHOLD)); t1=CurrentTick(); }else if(SENSOR_1<BLACKS){ left_s; }else if(SENSOR_1<BLACK){ left; }else if(SENSOR_1<THRESHOLD){ forward; }else if(SENSOR_1<WHITE){ right; }else if(SENSOR_1<WHITES){ right_s; } } Off(OUT_AB); Wait(1000); }
sub follow_line_rightT() { SetSensorLight(S1); SetSensorLight(S2); long t0=0,t1=0,stop_time=1; while(t1-t0<stop_time){ if((SENSOR_1<BLACKS)&&(SENSOR_2<BLACKS)){ t0=CurrentTick(); forward; until((SENSOR_1<THRESHOLD)&&(SENSOR_2<THRESHOLD)); t1=CurrentTick(); }else if(SENSOR_2<BLACKS){ right_s; }else if(SENSOR_2<BLACK){ right; }else if(SENSOR_2<THRESHOLD){ forward; }else if(SENSOR_2<WHITE){ left; }else if(SENSOR_2<WHITES){ left_s; } } Off(OUT_AB); Wait(1000); }
sub send_msg1() { int msg; while(msg!=SIGNALOFF1){ SendRemoteNumber(CONN,MAILBOX1,SIGNALON1); ReceiveRemoteNumber(MAILBOX1,true,msg); } }
sub send_msg2() { int msg; while(msg!=SIGNALOFF2){ SendRemoteNumber(CONN,MAILBOX2,SIGNALON2); ReceiveRemoteNumber(MAILBOX2,true,msg); } }
sub ball_catch1() { OnFwd(OUT_A,40); Wait(200); OnRev(OUT_B,50); Wait(500); OnRev(OUT_A,60); Wait(700); Off(OUT_AB); }
sub receive_msg1() { int msg; while(msg!=SIGNALON1){ ReceiveRemoteNumber(MAILBOX1,true,msg); } ball_catch1(); PlaySound(SOUND_UP); SendResponseNumber(MAILBOX1,SIGNALOFF1); }
sub ball_throw1() { OnFwd(OUT_A,40); Wait(100); OnFwd(OUT_B,50); Wait(500); OnRev(OUT_A,60); Wait(700); Off(OUT_AB); }
sub receive_msg2() { int msg; while(msg!=SIGNALON2){ ReceiveRemoteNumber(MAILBOX2,true,msg); } ball_throw1(); PlaySound(SOUND_UP); SendResponseNumber(MAILBOX2,SIGNALOFF2); }
task main() { follow_line_leftT();//A'¤«¤éK'¤Ø right_s; Wait(200); forward; Wait(900); Off(OUT_AB);//L¡Ç¤Ø send_msg1();//»Òµ¡¤Ç¥Ü¡¼¥ë¤ò¤Ä¤«¤à right_s; Wait(HALF); follow_line_right();//J'¤Ø send_msg2();//¥Ü¡¼¥ë¤òÍÆ´ï¤ËÆþ¤ì¤ë }
task main() { receive_msg1();//¥Ü¡¼¥ë¤ò¤Ä¤«¤à receive_msg2();//¥Ü¡¼¥ë¤òÍÆ´ï¤ËÆþ¤ì¤ë }
º£²ó¤Î²ÝÂê¤Ç¤Ï¥í¥Ü¥Ã¥ÈÀ½ºî¤ËÎϤòÆþ¤ì¤Æ¤·¤Þ¤¤¡¢£±¤Ä¤Î¥Ü¡¼¥ë¤òÍÆ´ï¤ËÆþ¤ì¤ë¤È¤³¤í¤Þ¤Ç¤·¤«¥×¥í¥°¥é¥à¤òºî¤ì¤Ê¤«¤Ã¤¿¡£¤Þ¤¿¡¢ËÜÈ֤ǤϤ½¤Î£±¤Ä¤Î¥Ü¡¼¥ë¤µ¤¨ÍÆ´ï¤ËÆþ¤ì¤ë¤³¤È¤¬¤Ç¤¤Ê¤«¤Ã¤¿¡£¤½¤ÎÍýͳ¤Ï¸÷¥»¥ó¥µ¡¼¤ÎÃͤÎÄ´À°¤¬¤·¤Ã¤«¤ê½ÐÍè¤Æ¤¤¤Ê¤«¤Ã¤¿¤³¤È¤À¤È¹Í¤¨¤é¤ì¤ë¡£
º£²ó¤Î²ÝÂê¤Ïº£¤Þ¤Ç¼ø¶È¤Ç³Ø¤ó¤À¤³¤È¤Î½¸ÂçÀ®¤Ç¤¢¤ê¡¢¥í¥Ü¥Ã¥ÈÀ©¸æ¤Î´ðÁääÌäÂê²ò·èÎϤò¿È¤Ë¤Ä¤±¤ë¤³¤È¤¬¤Ç¤¤¿¡£