¼«ºî¤·¤¿¥³¡¼¥¹(²¼¿Þ)¤Ë±è¤Ã¤Æ°ì¼þ¤¹¤ë¥í¥Ü¥Ã¥È¤òºîÀ®¤»¤è¡£
(¼ø¶È¤Ç¼¨¤µ¤ì¤¿¥³¡¼¥¹¿Þ¡Ë
É®¼Ô¤ÏÈ¿»þ·×²ó¤ê¤òôÅö¤·¤¿¡£
¢ª¾®²ó¤ê¤¬¤¤¯¤è¤¦¤Ë¤Ê¤Ã¤¿¡£
¢ª²ÄÆ°Éô¤ò¸º¤é¤·¡¢¸Î¾ã¤·¤¦¤ë²Õ½ê¤ò¸º¤é¤·¤¿¡£
(¥É¥é¥¤¥Ö¥Ù¡¼¥¹¤Î¼Ì¿¿)
(¥í¥Ü¥Ã¥È¤Î¼Ì¿¿)
/*¥Þ¥¯¥í¡¦Äê¿ô*/ #define THRESHOLD 45 //¥é¥¤¥ó¥È¥ì¡¼¥¹¤ÎïçÃÍ #define set_H SetPower(OUT_AC,7); //ľ¿ÊÍÑ®ÅÙ #define set_L SetPower(OUT_AC,1); //¥«¡¼¥ÖÍÑ®ÅÙ #define turn_l1 set_L;OnFwd(OUT_C);OnRev(OUT_A); //È¿»þ·×²ó¤êÀû²ó #define turn_l0 set_L;OnFwd(OUT_C);Off(OUT_A); //È¿»þ·×²ó¤ê°ÜÆ° #define turn_r0 set_L;OnFwd(OUT_A);Off(OUT_C); //»þ·×²ó¤ê°ÜÆ° #define turn_r1 set_L;OnFwd(OUT_A);OnRev(OUT_C); //»þ·×²ó¤êÀû²ó #define go_fwd set_H;OnFwd(OUT_AC); //Á°¿Ê #define go_rev set_H;OnRev(OUT_AC); //¸åÂà #define STEP 1 //¥é¥¤¥ó¥È¥ì¡¼¥¹¤Î³ÆÆ°ºî»þ´Ö #define C1 1000 //ºÇ½é¤Î¸òº¹ÅÀ¤Ë¶á¤Å¤¯¤Þ¤Ç¤Î»þ´Ö #define LAST_C 3000 //ºÇ¸å¤Î¸òº¹ÅÀ¤Ë¶á¤Å¤¯¤Þ¤Ç¤Î»þ´Ö #define TURN_T 74 //90¡ë²óž¤¹¤ë¤¿¤á¤Î½êÍ×»þ´Ö #define CAN_T 61 //¥É¥é¥¤¥ÖŤÀ¤±¿Ê¤à¤Î¤ËɬÍפʻþ´Ö #define Clock FastTimer(0)-AFT+BEF //´Ì¤òÆ°¤«¤¹¤Î¤Ë»È¤Ã¤¿»þ´Ö¤ò½ü¤¤¤¿»þ¹ï #define NCROSS 5 //¸òº¹ÅÀ¤òȽÃǤ¹¤ë¤¿¤á¤ÎïçÃÍ #define MOR 100 //¸òº¹ÅÀ¤ò¸¡ÃΤ·¤¿¤¢¤È¡¢¼¡¤Î¸òº¹ÅÀ¤ò¸¡ÃΤ·»Ï¤á¤ë¤Þ¤Ç¤Îͱͽ /*¥°¥í¡¼¥Ð¥ëÊÑ¿ô*/ int nline=0; //¸òº¹ÅÀ²£ÃÇÍѤΥ«¥¦¥ó¥¿ int BEF=0; //´Ì¤òÆ°¤«¤¹Á°¤Î»þ¹ï¤òµÏ¿¤¹¤ëÊÑ¿ô int AFT=0; //´Ì¤òÆ°¤«¤·¤¿¸å¤Î»þ¹ï¤òµÏ¿¤¹¤ëÊÑ¿ô int RCH=0; //ȿž¥«¥¦¥ó¥¿ /*¥¤¥ó¥é¥¤¥ó´Ø¿ô*/ void line(){ //Ä̾ï¥é¥¤¥ó¥È¥ì¡¼¥¹ if(SENSOR_2<THRESHOLD-7){turn_l1;} //¹õ¤¤Éôʬ¤ò´¶ÃΤ·¤¿¤éÈ¿»þ·×²ó¤êÀû²ó else if(SENSOR_2<THRESHOLD-5){turn_l0;} //¹õ´ó¤ê¤Î¶³¦¤ò´¶ÃΤ·¤¿¤éÈ¿»þ·×²ó¤ê°ÜÆ° else if(SENSOR_2<THRESHOLD+3){go_fwd;} //¶³¦¤òõÃΤ·¤¿¤éľ¿Ê else if(SENSOR_2<THRESHOLD+5){turn_r0;} //Çò´ó¤ê¤Î¶³¦¤ò´¶ÃΤ·¤¿¤é»þ·×²ó¤ê°ÜÆ° else{turn_r1;} //Çò¤¤Éôʬ¤ò´¶ÃΤ·¤¿¤é»þ·×²ó¤êÀû²ó Wait(STEP); //·èÄꤷ¤¿Æ°ºî¤ò°ìÄê»þ´Ö¹Ô¤¦ } void line_r(){ //³ÆÆ°ºî¤ÎÊý¸þ¤òȿž¤·¤¿¥é¥¤¥ó¥È¥ì¡¼¥¹ if(SENSOR_2<THRESHOLD-7){turn_r1;} else if(SENSOR_2<THRESHOLD-5){turn_r0;} else if(SENSOR_2<THRESHOLD+3){go_fwd;} else if(SENSOR_2<THRESHOLD+5){turn_l0;} else{turn_l1;} Wait(STEP); } void line_c(){ //¸òº¹ÅÀõº÷¤ò´Þ¤à¥é¥¤¥ó¥È¥ì¡¼¥¹ if(SENSOR_2<THRESHOLD-7){turn_l1;nline++;} //¹õ¤¤¾ì½ê¤ò¸¡ÃΤ·¤¿¤é¥«¥¦¥ó¥¿¤Ë£±²Ã¤¨¤ë else{ //¤½¤Î¾¤Î¾ì¹ç¤Ï¥«¥¦¥ó¥¿¤ò£°¤ËÌ᤹ if(SENSOR_2<THRESHOLD-5){turn_l0;} else if(SENSOR_2<THRESHOLD+3){go_fwd;} else if(SENSOR_2<THRESHOLD+5){turn_r0;} else{turn_r1;} nline=0; } Wait(STEP); } /*¥µ¥Ö¥ë¡¼¥Á¥ó*/ sub cross(){ //¸òº¹ÅÀ²£ÃÇ¥µ¥Ö¥ë¡¼¥Á¥ó Off(OUT_AC);PlaySound(2);Wait(10); //¸òº¹ÅÀ¤òÅϤê»Ï¤á¤ë¤³¤È¤òÃΤ餻¤ë turn_r1;Wait(TURN_T/2); //Êý¸þ½¤Àµ go_fwd;Wait(40); //¸òº¹ÅÀ¤òÅϤë if(Clock<LAST_C){turn_r1;until(SENSOR_2<THRESHOLD+5);} //¥é¥¤¥ó¾å¤ËÌ᤹ else{turn_l1;until(SENSOR_2<THRESHOLD+5);RCH++;} //ºÇ¸å¤Î¸òº¹ÅÀ¤ÏµÕ²óž¤Ç¥é¥¤¥ó¾å¤ËÌ᤹ nline=0; //¥«¥¦¥ó¥¿¤ò¥ê¥»¥Ã¥È ClearTimer(1); //°ìÄê»þ´Ö¤Ï¸òº¹ÅÀ¤ò¸¡ÃΤ·¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¡£ } sub canturn(){ //´Ì°ÜÆ°¥µ¥Ö¥ë¡¼¥Á¥ó BEF=FastTimer(0); //¼Â¹ÔÁ°¤Î»þ¹ï¤òµÏ¿ Off(OUT_AC);PlaySound(5);Wait(10); //´Ì¤òÆ°¤«¤·»Ï¤á¤ë¤³¤È¤òÃΤ餻¤ë go_fwd;Wait(CAN_T); //´Ì¤È°ì½ï¤Ë¥É¥é¥¤¥ÖŤÀ¤±¿Ê¤à turn_l1;Wait(2*TURN_T); //´Ì¤È°ì½ï¤Ë180¡ëÈ¿»þ·×²ó¤êÀû²ó go_rev;Wait(CAN_T);turn_r1;Wait(2*TURN_T); //´Ì¤òÃÖ¤¤¤Æ¥é¥¤¥ó¥È¥ì¡¼¥¹¤Î°ÌÃÖ¤ØÌá¤ë AFT=FastTimer(0)+CAN_T; //¼Â¹Ô¸å¤Î»þ¹ï+¦Á¤òµÏ¿ } /*¥á¥¤¥ó¥¿¥¹¥¯*/ task main(){ SetSensor(SENSOR_1,SENSOR_TOUCH); SetSensor(SENSOR_2,SENSOR_LIGHT); ClearTimer(0); //Áö¹Ô»þ´Ö¥¿¥¤¥Þ¡¼ ClearTimer(1); //¸òº¹ÅÀ¸¡ÃΤòÄä»ß¤µ¤»¤ë¤¿¤á¤Î¥¿¥¤¥Þ¡¼ /*½é´üÆ°ºî*/ go_fwd;until(SENSOR_2>=THRESHOLD+4);PlaySound(2);Off(OUT_AC); //¥¹¥¿¡¼¥Èľ¸å¤Î¸òº¹ÅÀ¤òĶ¤¨¤ë¤Þ¤ÇÁ°¿Ê turn_r1;until(SENSOR_2<=THRESHOLD-5);PlaySound(2);Off(OUT_AC); //¹õ¤¤¤È¤³¤í¤ò´¶ÃΤ¹¤ë¤Þ¤Ç»þ·×²ó¤êÀû²ó /*¤½¤Î¸å¤ÎÆ°ºî*/ while(true){ /*¾õÂÖ¡:¥é¥¤¥ó¥È¥ì¡¼¥¹³«»Ï¸å°ìÄê»þ´Ö·Ð¤Ã¤Æ¤¤¤Ê¤¤or¸òº¹ÅÀ²£ÃǸå°ìÄê»þ´Ö·Ð¤Ã¤Æ¤¤¤Ê¤¤¤È¤*/ while(Clock<C1||FastTimer(1)<MOR){ if(SENSOR_1==0){line();} //¥é¥¤¥ó¥È¥ì¡¼¥¹ else{canturn();} //´Ì¤ò¸¡ÃΤ·¤¿¤é°ÜÆ°¤µ¤»¤ë } /*¾õÂÖ¢:¥é¥¤¥ó¥È¥ì¡¼¥¹³«»Ï¸å°ìÄê»þ´Ö·Ð¤Ã¤Æ¤ª¤ê¡¢¸òº¹ÅÀ²£ÃǸå°ìÄê»þ´Ö·Ð¤Ã¤Æ¤ª¤ê¡¢ ¤µ¤é¤Ëȿž¥«¥¦¥ó¥¿¤ËÃͤ¬Æþ¤Ã¤Æ¤¤¤Ê¤¤¤È¤*/ while(Clock>=C1&&RCH==0&&FastTimer(1)>=MOR){ if(SENSOR_1==0){ if(nline>=NCROSS){cross();} //¹õ¤¤Éôʬ¤ò°ìÄê°Ê¾åϢ³¤Ç¸¡ÃΤ·¤¿¤é¸òº¹ÅÀ¤òÅϤë else{line_c();} //¸òº¹ÅÀ¤òõ¤·¤Ê¤¬¤é¥é¥¤¥ó¥È¥ì¡¼¥¹ } else{canturn();} //´Ì¤ò¸¡ÃΤ·¤¿¤é°ÜÆ°¤µ¤»¤ë } /*¾õÂÖ£:ȿž¥«¥¦¥ó¥¿¤ËÃͤ¬Æþ¤Ã¤Æ¤¤¤ë¤È¤(=ºÇ¸å¤Î¸òº¹ÅÀ¤òĶ¤¨¤¿¸å)*/ while(RCH>=1){ if(SENSOR_1==0){line_r();} //ȿž¥é¥¤¥ó¥È¥ì¡¼¥¹ else{canturn();} //´Ì¤ò¸¡ÃΤ·¤¿¤é°ÜÆ°¤µ¤»¤ë } } }
1¡¥¤Þ¤ºÇò¤¤Éôʬ¤ò¸¡ÃΤ¹¤ë¤Þ¤ÇÁ°¿Ê¤¹¤ë¡£
2¡¥¤½¤Î¸å¹õ¤¤Éôʬ¤ò¸¡ÃΤ¹¤ë¤Þ¤Ç»þ·×²ó¤êÀû²ó¤ò¹Ô¤¦¡£
¤³¤ÎÉôʬ¤ÇÄ̾ï¤Î¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¤¹¤ë¤È¡¢¥í¥Ü¥Ã¥È¤Î½é´ü°ÌÃ֤ˤè¤Ã¤Æ¤Ï»þ·×²ó¤ê¥³¡¼¥¹¤Ø¿ÊÆþ¤·¤Æ¤·¤Þ¤¦¤Î¤Ç¡¢
³Î¼Â¤ËÈ¿»þ·×²ó¤ê¥³¡¼¥¹¤Ë¿¯Æþ¤¹¤ë¤è¤¦¤Ë¤³¤Î¤è¤¦¤ÊÊýË¡¤ò¤È¤Ã¤¿¡£
1. ³«»Ï¸å£±£°É÷в᤹¤ë¤Þ¤Ç¤Ï¾õÂÖ¡¤ÇÆ°ºî¤¹¤ë¡£
2¡¥£±£°É÷вᤷ¤¿¤é¡¢¾õÂÖ¢¤Ë°Ü¹Ô¤¹¤ë¡£
3¡¥¹õ¤¤Éôʬ¤ò£µ²óϢ³¤Ç¸¡ÃΤ·¤¿¤é¡¢¸òº¹ÅÀ²£ÃÇ¥µ¥Ö¥ë¡¼¥Á¥ó¤ò¼Â¹Ô¤¹¤ë¡£
4¡¥¼Â¹Ô¸å£±ÉðÊÆâ¤Ï¾õÂÖ¡¤ÇÆ°ºî¤¹¤ë¡£
5¡¥£±É÷вá¸å¤ÏºÆ¤Ó¾õÂÖ¢¤Ë°Ü¹Ô¤¹¤ë¡£
³«»Ï¸å£±£°ÉðÊÆ⡦¸òº¹ÅÀ²£ÃǸ壱ÉðÊÆâ¤Ë¾õÂÖ¡¤ÇÆ°ºî¤¹¤ë¤Î¤Ï¡¢¸òº¹ÅÀ¤Ç¤Ê¤¤Éôʬ¤ò¸í¤Ã¤Æ¸òº¹ÅÀ¤Èǧ¼±¤·¤Æ¥³¡¼¥¹¤«¤é³°¤ì¤Æ¤·¤Þ¤¦¤Î¤òËɤ°¤¿¤á¤Ç¤¢¤ë¡£
¤Ê¤ª¡¢¸òº¹ÅÀ²£ÃÇ¥µ¥Ö¥ë¡¼¥Á¥ó¤ÎÆâÍƤϼ¡¹à¤Ë¾ù¤ë¡£
1¡¥Ää»ß¤·¤Æ¡¢²»¤òȯ¤·¤Æ¸òº¹ÅÀ²£ÃǤò»Ï¤á¤ë¤³¤È¤òÃΤ餻¤ë¡£
2¡¥¥í¥Ü¥Ã¥È¤¬¥³¡¼¥¹¤ËÂФ·¤Æ¤ª¤è¤½Ê¿¹Ô¤Ë¤Ê¤ë¤è¤¦¤Ë¡¢£´£µ¡ë¤À¤±»þ·×²ó¤êÀû²ó¤ò¤¹¤ë¡£
3¡¥0.4ÉÃľ¿Ê¤¹¤ë¡£
4¡¥¥é¥¤¥ó¤«¤é¤º¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¥é¥¤¥ó¾å¤Ë¾è¤ë¤Þ¤Ç»þ·×²ó¤êÀû²ó¤¹¤ë¡£
5¡¥¹õ¤¤Éôʬ¤òϢ³¤Ç¸¡ÃΤ·¤¿²ó¿ô¤òµÏ¿¤¹¤ë¥«¥¦¥ó¥¿¤ò¥ê¥»¥Ã¥È¤¹¤ë¡£
6¡¥¼Â¹Ô¸å£±Éäϸòº¹ÅÀõº÷¤ò¹Ô¤ï¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤¿¤á¡¢¥¿¥¤¥Þ¡¼¤ò³«»Ï¤¹¤ë¡£
¥Ý¥¤¥ó¥ÈB¤ÎÁ°¤Þ¤Ç(¾õÂÖ¡¡¦¢)¤Ï¿Ê¹ÔÊý¸þº¸Â¦¤Î¶³¦¤Ë±è¤Ã¤Æ¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¹Ô¤Ã¤Æ¤¤¤ë¤³¤È¤ò¤´Î±°Õ¤¤¤¿¤À¤¤¿¤¤¡£
1¡¥¤Þ¤º¸òº¹ÅÀ²£ÃÇ¥µ¥Ö¥ë¡¼¥Á¥ó¤Î£±¡Á£³¤Þ¤Ç¤ò¹Ô¤¦¡£
2¡¥¤³¤Î¤È¤¥í¥Ü¥Ã¥È¤Ï¿Ê¹ÔÊý¸þ±¦Â¦¤Ë¤º¤ì¤ë¤Î¤Ç¡¢£´¤òµÕ²óž(È¿»þ·×²ó¤ê)¤Ç¹Ô¤¦¡£
3¡¥È¿Å¾¥«¥¦¥ó¥¿¤Ë+1²Ã¤¨¤ë¡£(¾õÂÖ£¤Î¥È¥ê¥¬¡¼)
4¡¥£µ¡¦£¶¤ò¹Ô¤¦¡£
5¡¥¾õÂÖ£¤ÇÆ°ºî¤¹¤ë¡£
¤³¤³¤Ç¹Ô¤Ã¤Æ¤¤¤ë¤Î¤Ï¡¢¥é¥¤¥ó¥È¥ì¡¼¥¹¤ËÍѤ¤¤ë¶³¦¤ÎÀÚ¤êÂؤ¨¤Ç¤¢¤ë¡£
¶³¦¤ÎÀÚ¤êÂؤ¨¤ò¹Ô¤ï¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¿Ê¹ÔÊý¸þº¸Â¦¤Î¶³¦¤Ë¤Ï¥´¡¼¥ë¤ÎÌÜ°õ¤È¤Ê¤ë¤â¤Î¤Ï¤Ê¤¤¤¿¤á¡¢
¥´¡¼¥ë¤òõº÷¤¹¤ë¼êÃʤòÊ̤˹֤¸¤ëɬÍפ¬¤¢¤Ã¤¿¡£
¤·¤«¤·¶³¦¤òÀÚ¤êÂؤ¨¤ë¤³¤È¤Ë¤è¤ê¡¢¥´¡¼¥ë¤¹¤ë¤È¤¤ËÆÃÊ̤ι©Äø¤ÏÉÔÍפȤʤ롣
¤³¤Î¥×¥í¥°¥é¥à¤Ï´ðËÜŪ¤Ë¼¡¤Î3¤Ä¤Î¾õÂÖ¤òÁ«°Ü¤·¤Ê¤¬¤éÆ°ºî¤¹¤ë¡£
¾õÂÖ¡:¿Ê¹ÔÊý¸þº¸Â¦¤Î¶³¦¤Ë±è¤Ã¤¿¥é¥¤¥ó¥È¥ì¡¼¥¹
¾õÂÖ¢:¸òº¹ÅÀǧ¼±¤ò´Þ¤à¿Ê¹ÔÊý¸þº¸Â¦¤Î¶³¦¤Ë±è¤Ã¤¿¥é¥¤¥ó¥È¥ì¡¼¥¹
¾õÂÖ£:¿Ê¹ÔÊý¸þ±¦Â¦¤Î¶³¦¤Ë±è¤Ã¤¿¥é¥¤¥ó¥È¥ì¡¼¥¹
¤³¤Î¤Û¤«¤Ë¡¢¡Ö½é´üÆ°ºî¡×¡¢´Ì¤ò°ÜÆ°¤¹¤ë¹©Äø¤¬Â¸ºß¤¹¤ë¡£