²óž¤ò¥Ù¡¼¥¹¤Ë¥Ü¡¼¥ë¤ò¥¥ã¥Ã¥Á¡£¥¿¥¤¥Þ¡¼¤È¥¿¥Ã¥Á¥»¥ó¥µ¡¼¤òÍѤ¤¤ÆÀºÅÙ¤ò¸þ¾å¤µ¤»¤Þ¤·¤¿¡£ ¥×¥í¥°¥é¥à¤Ï°Ê¹ß¤Ë¼¨¤¹Ä̤ꡣ
Æñ´Ø¤À¤Ã¤¿¤Î¤Ï¶õ¤´Ì¤¬¤¢¤ë¤³¤È¡£¥·¥å¡¼¥È¤ÎÀµ³ÎÀ¤Ï¹â¤«¤Ã¤¿¤Î¤Ç¥í¥Ü¤Î¥Ý¥¸¥·¥ç¥ó¤òÄ´À°¤¹¤ë¤³¤È¤Ç¹îÉþ¡£
¥í¥Ü¤ÎËÜÂΤ¬¤«¤Ê¤êŤ¤¤¦¤¨¤Ë¥¢¡¼¥à¤Î¹½Â¤¾åÆ°¤¯É¬ÍפϤʤ·¡£¤³¤³¤¬¤³¤Î¥í¥Ü¤ÎÍøÅÀ¤Î°ì¤Ä¤Ç¤¹¡£
¤³¤ì¤Ë¤Ä¤¤¤Æ¤Ï¤Û¤Ü´°àú¡£¥·¥å¡¼¥È¤ÎÀºÅ٤ϤۤÜɬÃæ¤Ç¤·¤¿¡£¥í¥Ü¤Î¹½Â¤¾å´Êñ¤Ê¥×¥í¥°¥é¥à¤Ç¥·¥å¡¼¥È¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤¤Þ¤·¤¿¡£
#define THRESHOLD 40 #define HHIPOWER 7 // ľÀþ¤È¥Ü¡¼¥ë¤òÂǤÁ½Ð¤¹¤È¤ÍѤζ¯¤á¤Î¥Ñ¥ï¡¼ #define POWER 2 // ¥«¡¼¥Ö¡¢Àû²óÍѤμå¤á¤Î¥Ñ¥ï¡¼ #define LOWPOWER 0 // ¥Ü¡¼¥ë¤ò¥¥ã¥Ã¥Á¤¹¤ëÍѤμ夤¥Ñ¥ï¡¼ #define set_power_HH SetPower(OUT_AC,HHIPOWER); #define set_power_M SetPower(OUT_AC,POWER); #define set_power_L SetPower(OUT_B,LOWPOWER); #define go_forward set_power_HH; OnFwd(OUT_AC); // Á°¤Ë¿Ê¤àÆ°ºî #define go_back set_power_HH; OnRev(OUT_AC); // ¸å¤í¤Ë¿Ê¤àÆ°ºî #define turn_left1 set_power_M; Off(OUT_A); OnFwd(OUT_C); // º¸¤Ë¥«¡¼¥Ö¤¹¤ëÆ°ºî¡× #define turn_right1 set_power_M; OnFwd(OUT_A); Off(OUT_C); // ±¦¤Ë¥«¡¼¥Ö¤¹¤ëÆ°ºî #define turn_left2 set_power_M; OnRev(OUT_A); OnFwd(OUT_C); // º¸¤ËÀû²ó¤¹¤ëÆ°ºî #define turn_right2 set_power_M; OnFwd(OUT_A); OnRev(OUT_C); // ±¦¤ËÀû²ó¤¹¤ëÆ°ºî #define catch_ball set_power_L; OnFwd(OUT_B); // ¥Ü¡¼¥ë¤ò¥¥ã¥Ã¥Á¤¹¤ëÆ°ºî #define pass_ball set_power_HH; OnRev(OUT_B);Wait(150);Off(OUT_B); // ¥Ü¡¼¥ë¤òÂǤÁ½Ð¤¹Æ°ºî #define STEP 1 // £±²ó¤ÎȽÃǤÇÆ°ºî¤µ¤»¤ë»þ´Ö
¡¦¤³¤³¤«¤é¤¬¥í¥Ü¥Ã¥È¤òÆ°¤«¤¹¤¿¤á¤Î»ØÎá
task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); // ¡Ö£±¡×¤Î¤È¤³¤í¤Ë¸÷¥»¥ó¥µ¡¼¤òÀßÃÖ SetSensor(SENSOR_2,SENSOR_TOUCH); // ¡Ö£²¡×¤Î¤È¤³¤í¤Ë¥¿¥Ã¥Á¥»¥ó¥µ¡¼¤òÀßÃÖ SetSensor(SENSOR_3,SENSOR_LIGHT); // ¡Ö£³¡×¤Î¤È¤³¤í¤Ë¸÷¥»¥ó¥µ¡¼¤òÀßÃÖ
Âè°ì¤Î¥Ý¥¤¥ó¥È
¥¢¡¼¥à¤ÎŤµ¤Ë¤è¤ê²¼¿Þ¤ÎÀÖ¤¤Ìð°õ¤Î¤¢¤¿¤ê¤«¤éº¸Àû²ó¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¥Ü¡¼¥ë¤ò¥¥ã¥Ã¥Á¡£
ClearTimer(0); // ¥¿¥¤¥Þ¡¼¤ò¥ê¥»¥Ã¥È while (FastTimer(0) <= 430) { // 4.3Éô֡¢Ä̾ï¤Î¥é¥¤¥ó¥È¥ì¡¼¥¹ if (SENSOR_3 < THRESHOLD-4) { turn_left2; } else if (SENSOR_3 < THRESHOLD-3) { turn_left1; } else if (SENSOR_3 < THRESHOLD+5) { go_forward; } else if (SENSOR_3 < THRESHOLD+10) { turn_right1; } else { turn_right2; } Wait(STEP); } PlaySound(SOUND_UP); // 4.3Éô֡¢Ä̾ï¤Î¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¹Ô¤Ã¤¿¤é¡¢¥Ô¥í¥Ô¥í¡Á¤È¹â¤¤²»¤òÌĤ餹 set_power_M; OnRev(OUT_A); OnFwd(OUT_C); Wait(580); // 5.8Éô֡¢º¸¤ËÀû²ó¤¹¤ë while(SENSOR_2==0){ // ¥¿¥Ã¥Á¥»¥ó¥µ¡¼¤¬¥ª¥Õ¤Î´Ö¡¢¥Ü¡¼¥ë¤ò¥¥ã¥Ã¥Á¤¹¤ëÆ°ºî¤ò¹Ô¤¦ catch_ball; } Off(OUT_B);
¥Ü¡¼¥ë¤ò¼è¤Ã¤Æ¤«¤é¿Ê¹ÔÊý¸þ¤Ë¥í¥Ü¥Ã¥È¤ò¸þ¤±¤ë¤Þ¤Ç
¥Ü¡¼¥ë¤ò¼è¤Ã¤Æ¤«¤é¤â¸÷¥»¥ó¥µ¡¼¤¬¹õ¤ËÈ¿±þ¤¹¤ë¤Þ¤Çº¸Àû²ó¤µ¤»¤ë¤³¤È¤Ë¤è¤Ã¤Æ¿Ê¹ÔÊý¸þ¤Ë¥í¥Ü¥Ã¥È¤ò»ý¤Ã¤Æ¤¤¤¯¡£¥Ü¡¼¥ë¤ò¼è¤Ã¤Æ¤«¤é¤¹¤°¤Ë¸÷¥»¥ó¥µ¡¼¤ò»È¤¦¤È¡¢½é¤á¤ËµÕÊý¸þ¤Î¹õÀþ¤ËÈ¿±þ¤·¤Æ¤·¤Þ¤¦¤Î¤Ç¡¢£²Éô֥¿¥¤¥Þ¡¼¤ò»È¤Ã¤ÆÀû²ó¤·¤Æ¡¢½é¤á¤Î¹õÀþ¤òÆÍÇˤ·¤Æ¤«¤é¸÷¥»¥ó¥µ¡¼¤ò»ÈÍÑ¡£
Wait(200); // £²Éô֡¢¥Ü¡¼¥ë¤ò¥¥ã¥Ã¥Á¤¹¤ë¤È¤¤Îº¸Àû²ó¤ò³¤±¤ë Off(OUT_AC); while (SENSOR_3 > THRESHOLD-5) { // ¸÷¥»¥ó¥µ¡¼¤¬¹õ¤¤Àþ¤ËÈ¿±þ¤¹¤ë¤Þ¤Ç¡¢º¸¤ËÀû²ó turn_left2; } Off(OUT_AC);
¥Ü¡¼¥ë¤òÂǤÁ½Ð¤¹
¥í¥Ü¥Ã¥È¤ò¿Ê¹ÔÊý¸þ¤Ë¸þ¤±¤¿¤é¡¢¤¹¤°¤Ë¥Ü¡¼¥ë¤òÂǤÁ½Ð¤¹Æ°ºî¤ËÆÍÆþ¡£¤½¤Î¤Þ¤ÞÂǤĤȤȴ̤Ëľ·â¤·¤Æ¤·¤Þ¤¦¤¿¤á¾¯¤·Ìá¤Ã¤Æ¤«¤é¥Ü¡¼¥ë¤òÂǤÁ½Ð¤¹¡£
go_back;Wait(80);Off(OUT_AC);Wait(100); // 0.8Éôָå¤í¤Ë²¼¤¬¤Ã¤Æ¡¢£±ÉôÖÄä»ß pass_ball; // ¥Ü¡¼¥ë¤òÂǤÁ½Ð¤¹
¥Ü¡¼¥ë¤òÂǤÁ½Ð¤·¤Æ¤«¤é¡¢¥Ü¡¼¥ë¤ò¼õ¤±¤ë¤Þ¤Ç
Ä̾ï¤Î¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¤·¤Æ¡¢¥Ü¡¼¥ë¤ò¼õ¤±¤ë°ÌÃ֤ޤǥ¿¥¤¥Þ¡¼¤ò»È¤Ã¤Æ°ÜÆ°¤¹¤ë¡£¥Ü¡¼¥ë¤òÂǤÁ½Ð¤·¤¿»þ¤Ë¸å¤í¤Ë²¼¤ë¤Î¤Ç¡¢¥é¥¤¥ó¤òæÀþ¤·¤Æ¤·¤Þ¤¦¤«¤é¡¢¾¯¤·Á°¤Ë¿Ê¤ó¤Ç¤«¤é¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¤·¤Þ¤¹¡£¥Ü¡¼¥ë¤Ï¥¢¡¼¥à¤ÎÈÏ°ÏÆâ¤Ë½Ð¤µ¤ì¤ë¤È¡¢¼«Á³¤È¥¢¡¼¥à¤ÎÆ⦤˼ý¤Þ¤ë¤Î¤Ç¡¢¾¯¤·º¸¤Ë¥«¡¼¥Ö¤·¤Æ¡¢¥Ü¡¼¥ë¤ò¥¢¡¼¥à¤Î±ü¤Ë°ÜÆ°¤µ¤»¤Æ¤«¤é¥Ü¡¼¥ë¤ò¥¥ã¥Ã¥Á¤¹¤ë¡£
¡¡¡¡go_forward;Wait(80);Off(OUT_AC); // 0.8ÉôÖÁ°¿Ê¤·¤Æ¡¢¹õ¤¤Àþ¤ËÈ¿±þ¤Ç¤¤ë¤È¤³¤í¤Þ¤Ç°ÜÆ°¤¹¤ë ClearTimer(0); // ¥¿¥¤¥Þ¡¼¤ò¥ê¥»¥Ã¥È while (FastTimer(0) <= 170) { // 1.7Éô֡¢Ä̾ï¤Î¥é¥¤¥ó¥È¥ì¡¼¥¹ if (SENSOR_3 < THRESHOLD-4) { turn_right2; } else if (SENSOR_3 < THRESHOLD-3) { turn_right1; } else if (SENSOR_3 < THRESHOLD+5) { go_forward; } else if (SENSOR_3 < THRESHOLD+10) { turn_left1; } else { turn_left2; } Wait(STEP); } Off(OUT_AC); // 1.7Éô֡¢Ä̾ï¤Î¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¹Ô¤Ã¤¿¤éÄä»ß¤¹¤ë Wait(1000); // Áê¼ê¤«¤é¤Î¥Ñ¥¹¤¬¤¯¤ë¤Þ¤Ç¤Î10ÉôÖÄä»ß¤·¤ÆÂÔ¤Ä turn_left1;Wait(100); // £±Éôֺ¸¤Ë¥«¡¼¥Ö¤·¤Æ¡¢¥Ü¡¼¥ë¤ò¥¢¡¼¥à¤Î±ü¤Þ¤Ç°ÜÆ°¤µ¤»¤ë while(SENSOR_2==0){ // ¥¿¥Ã¥Á¥»¥ó¥µ¡¼¤¬¥ª¥Õ¤Î´Ö¡¢¥Ü¡¼¥ë¤ò¥¥ã¥Ã¥Á¤¹¤ëÆ°ºî¤ò³¤±¤ë catch_ball; } Off(OUT_B); PlaySound(SOUND_UP); // ¥Ü¡¼¥ë¤ò¥¥ã¥Ã¥Á¤·¤¿¤é¡¢¥Ô¥í¥Ô¥í¡Á¤È¹â¤¤²»¤òÌĤ餹 }
¥í¥Ü¥³¥ó¤Çȯɽ¤·¤¿¥×¥í¥°¥é¥à¤Ï¤³¤³¤Þ¤Ç¡£
´Ì¤Ë¸þ¤«¤Ã¤Æ¥·¥å¡¼¥È
´Ì¤Ë¥·¥å¡¼¥È¤¹¤ë¤È¤¤Î¥×¥í¥°¥é¥à¤â°ì±þźÉÕ¡£
ºÇ¸å¤Ë¥Ö¡¼¥ë¤ò¼õ¤±¤ë°ÌÃÖ¤«¤é¡¢¥·¥å¡¼¥È¤¹¤ë¤Þ¤Ç¤Î¥×¥í¥°¥é¥à¡£Ì¿ÃæΨ¤Ï¹â¤á¡£
¤³¤³¤ÇÂç»ö¤Ê¤Î¤Ï¡¢¥·¥å¡¼¥È¤¹¤ë°ÌÃÖ¼è¤ê¤Ê¤Î¤Ç£±ÉÃÁ°¿Ê¡¢0.6Éú¸¤ËÀû²ó¤¹¤ë¤³¤È¤Ë¤è¤Ã¤ÆÀä¹¥¤Î°ÌÃÖ¤ËÃ夤ޤ¹¡£¤³¤³¤Þ¤Ç¤¤¿¤é¡¢¤½¤Î¤Þ¤Þ¥·¥å¡¼¥È¡£
task main() { OnFwd(OUT_AC);Wait(100); // £±ÉÃÁ°¿Ê OnRev(OUT_A); OnFwd(OUT_C);Wait(60);Off(OUT_AC); // 0.6Éᢺ¸¤ËÀû²ó OnRev(OUT_B);Wait(100);Off(OUT_B); // ¥Ü¡¼¥ë¤òÂǤÁ½Ð¤¹ }