#contents *²ÝÂꣳ [#i7bb9d12] º£²ó¤Î²ÝÂê¤Ë¤Ä¤¤¤Æ¤Ï[[2019a/Mission3]]¤ÎÄ̤ê¤Ç¤¢¤ë¡£ &ref(./2019a-mission3-2.png,50%); »ä¤¿¤Á¤Ï°Ê²¼¤Î¥ë¡¼¥È¤ÇÁö¹Ô¤·¡¢¥Ü¡¼¥ë¤ò±¿È¤¹¤ë¥×¥í¥°¥é¥à¤òºîÀ®¤¹¤ë¤³¤È¤Ë¤·¤¿¡£ A'(½Ðȯ) ¢ª K' ¢ª L'(¥Ü¡¼¥ë¡¤ò¤Ä¤«¤à) ¢ª K' ¢ª J'(¥Ü¡¼¥ë¡±¿È´°Î») ¢ª K' ¢ª M' ¢ª N' ¢ª N ¢ª B ¢ª M ¢ª K ¢ª L(¥Ü¡¼¥ë¢¤ò¤Ä¤«¤à) ¢ª K ¢ª J(¥Ü¡¼¥ë¢¤òÍÆ´ï¤ËÆþ¤ì¤ë¡£ÍÆ´ï¤ò»ý¤Á¾å¤²¤ë¡£) ¢ª C ¢ª B ¢ª N ¢ª C' ¢ª I' (¥Ü¡¼¥ë¢£¤±¿È´°Î») *¥í¥Ü¥Ã¥È¤Î¹½Â¤ [#r33d348f] **¥í¥Ü¥Ã¥ÈÁ´ÂΤˤĤ¤¤Æ [#i6e6edad] &ref(./unnamed.jpg,20%); º£²ó¤Î¥í¥Ü¥Ã¥È¤Ï£²Âæ¤ÎNXT¤òÄÌ¿®¤·¤Æ¥×¥í¥°¥é¥à¤òÀ©¸æ¤¹¤ë¤Î¤Ç¡¢¡Ö£²Âæ¤ÎNXT¤òÊÌ¡¹¤ËÀ©¸æ¤¹¤ë¡×¤Þ¤¿¤Ï¡Ö£²Âæ¤ÎNXT¤ò°ìÂ⽤µ¤»¤Æ¥í¥Ü¥Ã¥È¤òºî¤ë¡×¤È¤¤¤¦£²¤Ä¤ÎÊý¿Ë¤¬¹Í¤¨¤é¤ì¤ë¤¬»ä¤¿¤Á¤Ï¡¢£²Âæ¤ÎNXT¤ò°ìÂ⽤µ¤»¤Æ¥í¥Ü¥Ã¥È¤òºî¤Ã¤¿¡£¤Þ¤¿¡¢ÍÆ´ïÆâ¤Î¥Ü¡¼¥ë¤ò¤Ä¤«¤à¤Î¤ÏÆñ¤·¤¤¤È¹Í¤¨¤¿¤Î¤Ç¡¢¥Ü¡¼¥ë¤ÎÆþ¤Ã¤¿Íƴ老¤È»ý¤Á¾å¤²¡¢¤Á¤ã¤ÖÂæÊÖ¤·¤Î¤è¤¦¤Ë¤·¤ÆÍÆ´ïÆâ¤Î¥Ü¡¼¥ë¤ò±¿È¤¹¤ë¤³¤È¤Ë¤·¤¿¡£¤½¤ÎºÝ¡¢ÍÆ´ïÆâ¤Î¥Ü¡¼¥ë¤¬¤É¤¦¤·¤Æ¤â¥í¥Ü¥Ã¥È¤Ë¹ß¤ê¤«¤«¤Ã¤Æ¤·¤Þ¤¦¤Î¤Ç¡¢¥í¥Ü¥Ã¥È¤Î¾å¤Ëºä¤òÉÕ¤±¡¢¥Ü¡¼¥ë¤ò¥í¥Ü¥Ã¥È¤Î¾å¤Çž¤¬¤¹¤³¤È¤ÇÍÆ´ïÆâ¤Î¥Ü¡¼¥ë¤ò±¿È¤µ¤»¤ë¤³¤È¤Ë¤·¤¿¡£ ¥Ü¡¼¥ë¡¢¤ò¤Ä¤«¤à¥¢¡¼¥à¤ÈÍÆ´ï¤ò¤Ä¤«¤à¥¢¡¼¥à¤Î·×£²¤Ä¤Î¥¢¡¼¥à¤òºî¤Ã¤¿¡£ **¥Ü¡¼¥ë¤ò¤Ä¤«¤à¥¢¡¼¥à [#zf3e8572] &ref(./IMG_2712.jpeg,20%); ¥â¡¼¥¿¡¼¤ò£²¤Ä»ÈÍѤ·¤¿¡££±¤Ä¤Ï¥Ü¡¼¥ë¤ò¤Ä¤«¤ß¡¢¤â¤¦£±¤Ä¤Ï¾å²¼¤ËÆ°¤«¤¹Ìò³ä¤ò¤·¤Æ¤¤¤ë¡£ **ÍÆ´ï¤ò¤Ä¤«¤à¥¢¡¼¥à [#b5b9756c] &ref(./IMG_2713.jpeg,20%); ¥Ü¡¼¥ë¤ò¤Ä¤«¤à¥¢¡¼¥à¤ÈƱ¤¸µ¡¹½¤Ç¤¢¤ë¡£ÍÆ´ï¤òÍî¤È¤µ¤Ê¤¤¤¿¤á¤Ë¥¢¡¼¥à¤Ë¥¿¥¤¥ä¤ò·×£´¤ÄÉÕ¤±¤¿¡£ **¥í¥Ü¥Ã¥È¤Ë¼è¤êÉÕ¤±¤¿ºä [#y9f7be16] &ref(./IMG_2708.jpeg,20%); ¥¢¡¼¥à¤ò»ý¤Á¾å¤²¤¿¤È¤¤ÎºÇ¹âÅÀ¤Ë¤Á¤ç¤¦¤Éºä¤¬¤¯¤ë¤è¤¦¤Ë¤·¤¿¡£ **¸÷¥»¥ó¥µ¡¼ [#rec52c42] &ref(./IMG_2710.jpeg,20%); ¼Ì¿¿¤Ë¤¢¤ë¤è¤¦¤Ë¸÷¥»¥ó¥µ¡¼¤ò£²¤Ä»ÈÍѤ·¤¿¡£ *¥×¥í¥°¥é¥à [#ve457ea5] **¥é¥¤¥ó¥È¥ì¡¼¥¹ [#rc18d139] &ref(./hikari.png,50%); ¾å¿Þ¤Î¤è¤¦¤ËÀþ¤ò£²¤Ä¤Î¸÷¥»¥ó¥µ¡¼¤Ç¶´¤ó¤À¡£ &ref(./hikari2.png,50%); ¸÷¥»¥ó¥µ¡¼¤Ï¿Þ¤Î¤è¤¦¤ÊÃͤò¤È¤Ã¤¿¡£¤³¤Î£³¤Ä¤ÎÃͤˡ¢£³£¸¤È£µ£³¤Î´Ö¤Î£´£µ¤È£µ£³¤È£¶£¸¤Î¤Î´Ö¤Î£¶£°¤ò²Ã¤¨¤Æ¡¢¸÷¥»¥ó¥µ¡¼¤ÎÃͤò£µÃʳ¬¤Ëʬ¤±¤¿¡£ ²ÝÂꣲ¤ÈƱÍͤˣ±¤Ä¤Î¸÷¥»¥ó¥µ¡¼¤òÍѤ¤¤Æ²¼¿Þ¤Î¤è¤¦¤Ë¸÷¥»¥ó¥µ¡¼¤Î¼è¤ëÃͤȥí¥Ü¥Ã¥È¤ÎÆ°¤¤òÂбþ¤µ¤»¤¿¡£ &ref(./hikari3.png,50%); ¤¿¤À¤·¡¢¸òº¹ÅÀ¤Ç¤Ï£²¤Ä¤Î¸÷¥»¥ó¥µ¡¼¤¬£³£¸¤È¤Ê¤ë¤Î¤Ç¡¢£²¤Ä¸÷¥»¥ó¥µ¡¼¤¬°ìÄê¤Î»þ´Ö£³£¸¤È¤Ê¤Ã¤¿¤È¤¤Ë»ß¤Þ¤ë¤è¤¦¤Ë¤·¤¿¡£¤Þ¤¿¡¢¤³¤Î»þ´Ö¤òÊѲ½¤µ¤»¤ë¤³¤È¤Ç²¼¿Þ¤Î¤è¤¦¤Ê¾ì½ê¤Ç¤â»ß¤Þ¤ì¤ë¤è¤¦¤Ë¤·¤¿¡£ &ref(./hikari4.png,50%); **define [#f77fd09f] ***¸÷¥»¥ó¥µ¡¼¤Î¼è¤ëÃÍ [#qbf2e711] #define BLACKS 38 #define BLACK 45 #define THRESHOLD 53 #define WHITE 60 #define WHITES 68 ***¸÷¥»¥ó¥µ¡¼¤ËÂбþ¤·¤¿Æ°¤ [#ya1e3ee1] #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 [#y1f5da39] #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 **¥µ¥Ö¥ë¡¼¥Á¥ó¡Ê¿Æµ¡¡Ë [#gd0e715d] ***¸òº¹ÅÀ¤Ç»ß¤Þ¤ë¥×¥í¥°¥é¥à¡Êº¸Â¦¤ò¥é¥¤¥ó¥È¥ì¡¼¥¹¡Ë [#hd7cd065] 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); } ***¸òº¹ÅÀ¤Ç»ß¤Þ¤ë¥×¥í¥°¥é¥à¡Ê±¦Â¦¤ò¥é¥¤¥ó¥È¥ì¡¼¥¹¡Ë [#p6fbb547] 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); } ***T»úÏ©¤Ç»ß¤Þ¤ë¥×¥í¥°¥é¥à¡Êº¸Â¦¤ò¥é¥¤¥ó¥È¥ì¡¼¥¹¡Ë [#cedceab8] 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); } ***T»úÏ©¤Ç»ß¤Þ¤ë¥×¥í¥°¥é¥à¡Ê±¦Â¦¤ò¥é¥¤¥ó¥È¥ì¡¼¥¹¡Ë [#de88804b] 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); } ***¤½¤Î¾¥µ¥Ö¥ë¡¼¥Á¥ó [#f6458069] sub start_right() { right; Wait(500); } sub start_left() { left; Wait(500); } ***»Òµ¡¤ËÌ¿Îá¤ò½Ð¤¹¥×¥í¥°¥é¥à [#f6458069] 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); } } **¥µ¥Ö¥ë¡¼¥Á¥ó¡Ê»Òµ¡¡Ë [#x7ba3b6f] ***¥Ü¡¼¥ë¤ò¤Ä¤«¤à¥×¥í¥°¥é¥à [#a7ed61f9] 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); } ***¥Ü¡¼¥ë¤òÍÆ´ï¤ËÆþ¤ì¤ë¥×¥í¥°¥é¥à [#i70e3e81] 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); } **¥×¥í¥°¥é¥àÁ´ÂΡʿƵ¡¡Ë [#n1632a72] 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();//¥Ü¡¼¥ë¤òÍÆ´ï¤ËÆþ¤ì¤ë } **¥×¥í¥°¥é¥àÁ´ÂΡʻҵ¡¡Ë [#m32a04fa] task main() { receive_msg1();//¥Ü¡¼¥ë¤ò¤Ä¤«¤à receive_msg2();//¥Ü¡¼¥ë¤òÍÆ´ï¤ËÆþ¤ì¤ë } *È¿¾Ê¤È´¶ÁÛ [#te26a530] º£²ó¤Î²ÝÂê¤Ç¤Ï¥í¥Ü¥Ã¥ÈÀ½ºî¤ËÎϤòÆþ¤ì¤Æ¤·¤Þ¤¤¡¢£±¤Ä¤Î¥Ü¡¼¥ë¤òÍÆ´ï¤ËÆþ¤ì¤ë¤È¤³¤í¤Þ¤Ç¤·¤«¥×¥í¥°¥é¥à¤òºî¤ì¤Ê¤«¤Ã¤¿¡£¤Þ¤¿¡¢ËÜÈ֤ǤϤ½¤Î£±¤Ä¤Î¥Ü¡¼¥ë¤µ¤¨ÍÆ´ï¤ËÆþ¤ì¤ë¤³¤È¤¬¤Ç¤¤Ê¤«¤Ã¤¿¡£¤½¤ÎÍýͳ¤Ï¸÷¥»¥ó¥µ¡¼¤ÎÃͤÎÄ´À°¤¬¤·¤Ã¤«¤ê½ÐÍè¤Æ¤¤¤Ê¤«¤Ã¤¿¤³¤È¤À¤È»×¤¦¡£ º£²ó¤Î²ÝÂê¤Ç¤Ï¥í¥Ü¥Ã¥ÈÀ½ºî¤ËÎϤòÆþ¤ì¤Æ¤·¤Þ¤¤¡¢£±¤Ä¤Î¥Ü¡¼¥ë¤òÍÆ´ï¤ËÆþ¤ì¤ë¤È¤³¤í¤Þ¤Ç¤·¤«¥×¥í¥°¥é¥à¤òºî¤ì¤Ê¤«¤Ã¤¿¡£¤Þ¤¿¡¢ËÜÈ֤ǤϤ½¤Î£±¤Ä¤Î¥Ü¡¼¥ë¤µ¤¨ÍÆ´ï¤ËÆþ¤ì¤ë¤³¤È¤¬¤Ç¤¤Ê¤«¤Ã¤¿¡£¤½¤ÎÍýͳ¤Ï¸÷¥»¥ó¥µ¡¼¤ÎÃͤÎÄ´À°¤¬¤·¤Ã¤«¤ê½ÐÍè¤Æ¤¤¤Ê¤«¤Ã¤¿¤³¤È¤À¤È¹Í¤¨¤é¤ì¤ë¡£ º£²ó¤Î²ÝÂê¤Ïº£¤Þ¤Ç¼ø¶È¤Ç³Ø¤ó¤À¤³¤È¤Î½¸ÂçÀ®¤Ç¤¢¤ê¡¢¥í¥Ü¥Ã¥ÈÀ©¸æ¤Î´ðÁääÌäÂê²ò·èÎϤò¿È¤Ë¤Ä¤±¤ë¤³¤È¤¬¤Ç¤¤¿¡£