²¼¤Î¿Þ¤Î¤è¤¦¤Ê¥³¡¼¥¹¤ò³Æ¥Á¡¼¥à¤ÇºîÀ®¤·¡¢¡Ö¥ß¥Ã¥·¥ç¥ó¡×¤ò¿ë¹Ô¤¹¤ë¤¿¤á¤Î¥í¥Ü¥Ã¥È¤òºîÀ®¤»¤è¡£
¹õÀþ¤ÎÉý¤Ï20mm¤Ç¤Ê¤ë¤Ù¤¯¶ÑÅù¤ÊÇ»¤µ¤Ë¤¹¤ë¤³¤È¡£¤Ê¤ª¿Þ¤ÎÃæ¤ÎÀ£Ë¡¤Îñ°Ì¤Ïcm¤Ç¡¢¹õÀþ¤Ë¤Ä¤¤¤Æ¤Ï¤½¤Î¿¿¤óÃ椫¤é¤Îµ÷Î¥¤Ç¤¢¤ë¡£
¼¡¤Î¤¤¤º¤ì¤«¤Î·ÐÏ©¤ò¹õ¤¤Àþ¤Ë¤½¤Ã¤ÆÆ°¤¯¥í¥Ü¥Ã¥È¤òºîÀ®¤¹¤ë (¾¤Î¥á¥ó¥Ð¡¼¤È¤ÏÊ̤ηÐÏ©¤Ë¤Ê¤ë¤è¤¦¤Ë¤¹¤ë)¡£¤¿¤À¤·¡¢¤Ê¤ë¤Ù¤¯Â®¤¯Àµ³Î¤ËÆ°¤¯¥í¥Ü¥Ã¥È¤Ë¤Ê¤ë¤è¤¦¤Ë¹©Éפ·¤Æ¡¢¸òº¹ÅÀ¤Ç¤Ï1ÉôÖÄä»ß¤¹¤ë¤³¤È¡£
¼«Ê¬¤ÏAÃÏÅÀ¤«¤éBÃÏÅÀ¡ÊAÃÏÅÀ ¢ª Pľ¿Ê ¢ª Qľ¿Ê ¢ª Qľ¿Ê ¢ª Rº¸ÀÞ ¢ª BÃÏÅÀ¡Ë¤Ø¹Ô¤¯¥³¡¼¥¹¤òôÅö¤·¤¿¡£
¥µ¥ó¥×¥ë¤Î¥í¥Ü¥Ã¥È¤Ë¸÷¥»¥ó¥µ¡¼¤ò¼è¤êÉÕ¤±¤¿¡£
¸÷¥»¥ó¥µ¡¼¤Î¼è¤êÉÕ¤±Êý¤ÏÀâÌÀ½ñÄ̤ê¤Ë¹Ô¤Ã¤¿¡£
¥í¥Ü¥Ã¥È¤Îµ¡ÂΤˤϤ¢¤Þ¤ê¹©Éפ¬¤Ç¤¤Ê¤«¤Ã¤¿¡£
¸÷¥»¥ó¥µ¡¼¤Î°ÌÃÖ¤ò¤â¤Ã¤Èµ¡ÂΤ˶á¤Å¤±¤¿¤ê¤¹¤ì¤Ð¤â¤Ã¤È·ë²Ì¤¬ÊѤï¤Ã¤¿¤«¤â¤·¤ì¤Ê¤¤¡£
°Ê²¼¤¬º£²ó»ÈÍѤ·¤¿¥×¥í¥°¥é¥à¤ÎÁ´ÂΤǤ¢¤ë¡£
#define BLACK 45 #define WHITE 54 #define SPEED1 20 #define SPEED2 30 #define go_forward OnFwd(OUT_BC,SPEED2); #define turn_left(t,w1,w2) OnFwd(OUT_B,w1); OnRev(OUT_C,w2); Wait(t);Off(OUT_BC); #define turn_left1 OnFwd(OUT_B,SPEED1);Off(OUT_C); #define turn_left2 OnFwd(OUT_B,SPEED1);OnRev(OUT_C,SPEED1); #define turn_right(t,w1,w2) OnFwd(OUT_C,w1); OnRev(OUT_A,w2); Wait(t);Off(OUT_BC); #define turn_right1 Off(OUT_B);OnFwd(OUT_C,SPEED1); #define turn_right2 OnRev(OUT_B,SPEED1);OnFwd(OUT_C,SPEED1); #define STEP 1 #define short_break Off(OUT_BC);Wait(1000);PlaySound(SOUND_UP); #define cross_line go_forward;Wait(200);Off(OUT_BC);Wait(1000); #define nMAX 330 void line_trace() { SetSensorLight(S1); int nOnline=0; while (nOnline < nMAX ) { if (SENSOR_1 < BLACK-5) { turn_left2; nOnline++; } else { if (SENSOR_1 < BLACK) { turn_left1; } else if (SENSOR_1 < WHITE) { go_forward; } else if (SENSOR_1 < WHITE+5) { turn_right1; } else { turn_right2; } nOnline=0; } Wait(STEP); } short_break; nOnline=0; Off(OUT_BC); } void line_closs() { cross_line; SetSensorLight(S1); do{ if (SENSOR_1 < BLACK) { turn_right1; } else if (SENSOR_1 > WHITE) { turn_left2; } } while((SENSOR_1 > BLACK)&&(SENSOR_1 < WHITE)); Off(OUT_BC); } void line_left() { cross_line; turn_left(1000,20,20) SetSensorLight(S1); do{ if (SENSOR_1 < BLACK) { turn_right1; } else if (SENSOR_1 > WHITE) { turn_left2; } } while((SENSOR_1 > BLACK)&&(SENSOR_1 < WHITE)); Off(OUT_BC); } void last_move() { go_forward; Wait(1500); Off(OUT_BC); } task main() { line_trace(); line_closs(); line_trace(); line_closs(); line_trace(); line_closs(); line_trace(); line_left(); line_trace(); last_move(); }
#define BLACK 45¡¡//¹õ¿§¤ÎÄêµÁ #define WHITE 54¡¡//Çò¿§¤ÎÄêµÁ #define SPEED1 20 #define SPEED2 30 #define go_forward OnFwd(OUT_BC,SPEED2);¡¡//Á°¿Ê #define turn_left(t,w1,w2) OnFwd(OUT_B,w1); OnRev(OUT_C,w2); Wait(t);Off(OUT_BC);¡¡//º¸¤Ë¶Ê¤¬¤ë #define turn_left1 OnFwd(OUT_B,SPEED1);Off(OUT_C);¡¡//º¸¤Ë¶Ê¤¬¤ë¡ #define turn_left2 OnFwd(OUT_B,SPEED1);OnRev(OUT_C,SPEED1);¡¡//º¸¤Ë¶Ê¤¬¤ë¢ #define turn_right(t,w1,w2) OnFwd(OUT_C,w1); OnRev(OUT_A,w2); Wait(t);Off(OUT_BC);¡¡//±¦¤Ë¶Ê¤¬¤ë #define turn_right1 Off(OUT_B);OnFwd(OUT_C,SPEED1);¡¡//±¦¤Ë¶Ê¤¬¤ë¡ #define turn_right2 OnRev(OUT_B,SPEED1);OnFwd(OUT_C,SPEED1);¡¡//±¦¤Ë¶Ê¤¬¤ë¢ #define STEP 1¡¡//£±²ó¤ÎȽÃǤÇÆ°ºî¤µ¤»¤ë»þ´Ö #define short_break Off(OUT_BC);Wait(1000);PlaySound(SOUND_UP);¡¡//£±Éûߤޤäƥ֥¶¡¼¤òÌĤ餹 #define cross_line go_forward;Wait(200);Off(OUT_BC);Wait(1000);¡¡//¸òº¹ÅÀ¤òÅϤë #define nMAX 330¡¡//¥«¡¼¥Ö¤È¤ß¤Ê¤»¤ë²ó¿ô¤ÎºÇÂçÃÍ
void line_trace() { SetSensorLight(S1); int nOnline=0; while (nOnline < nMAX ) {¡¡//¹õ¤¬nMAX²ó³¤«¤Ê¤¤¸Â¤êÀþ¤Îº¸Ã¼¤ò¥È¥ì¡¼¥¹¤¹¤ë if (SENSOR_1 < BLACK-5) { turn_left2; nOnline++;¡¡//¥«¥¦¥ó¥¿¤òÁý¤ä¤¹ } else { if (SENSOR_1 < BLACK) { turn_left1; } else if (SENSOR_1 < WHITE) { go_forward; } else if (SENSOR_1 < WHITE+5) { turn_right1; } else { turn_right2; } nOnline=0;¡¡//¥«¥¦¥ó¥¿¤ò£°¤Ë¤¹¤ë } Wait(STEP); } short_break; nOnline=0;¡¡//¥«¥¦¥ó¥¿¤ò£°¤Ë¤¹¤ë Off(OUT_BC); }
Àþ¤Îº¸Ã¼¤ò¥È¥ì¡¼¥¹¤¹¤ë¥×¥í¥°¥é¥à¡£
¸÷¥»¥ó¥µ¡¼¤¬¹õ¤ònMAX(330)²ó°Ê¾åϢ³¤ÇȽÃǤ¹¤ë¤È¸òº¹ÅÀ¤È¤ß¤Ê¤·Ää»ß¤¹¤ë¡£
void line_closs() { cross_line; SetSensorLight(S1); do{¡¡//Àþ¤Îº¸Ã¼¤òõ¤¹ if (SENSOR_1 < BLACK) { turn_right1; } else if (SENSOR_1 > WHITE) { turn_left2; } } while((SENSOR_1 > BLACK)&&(SENSOR_1 < WHITE)); Off(OUT_BC); }
¸òº¹ÅÀ¤òÅϤêÀڤ俸塢¼¡¤Î¥é¥¤¥ó¥È¥ì¡¼¥¹¤Î¤¿¤á¤Ë¥í¥Ü¥Ã¥È¤Î¸þ¤¤òÄ´À᤹¤ë¥×¥í¥°¥é¥à¡£
void line_left() { cross_line; turn_left(1000,20,20);¡¡//º¸¤Ë¶Ê¤¬¤ë SetSensorLight(S1); do{¡¡//Àþ¤Îº¸Ã¼¤òõ¤¹ if (SENSOR_1 < BLACK) { turn_right1; } else if (SENSOR_1 > WHITE) { turn_left2; } } while((SENSOR_1 > BLACK)&&(SENSOR_1 < WHITE)); Off(OUT_BC); }
void line_closs¤Îº¸ÀޥС¼¥¸¥ç¥ó¡£
void last_move() { go_forward; Wait(1500); PlaySound(SOUND_UP); Off(OUT_BC); }
ºÇ¸å¤ËBÃÏÅÀ¤Î°Ï¤¤¤ËÆþ¤ê¡¢¥Ö¥¶¡¼¤òÌĤ餹¡£
task main() { line_trace(); line_closs(); line_trace(); line_closs(); line_trace(); line_closs(); line_trace(); line_left(); line_trace(); last_move(); }
¥µ¥Ö¥ë¡¼¥Á¥ó¤òÁȤ߹ç¤ï¤»¤ÆAÃÏÅÀ¤«¤éBÃÏÅÀ¤Ø¹Ô¤¯¥×¥í¥°¥é¥à¡£
²¿¤È¤«¥´¡¼¥ë¤Þ¤Ç¤¿¤É¤êÃ夯¤³¤È¤Ï¤Ç¤¤¿¡£
AÃÏÅÀ¤«¤éBÃÏÅÀ¤Þ¤Ç¤Ë¤«¤«¤Ã¤¿»þ´Ö¤Ï£±Ê¬£²£·ÉäۤɤÀ¤Ã¤¿¡£
¤â¤Ã¤ÈÁ᤯¥´¡¼¥ë¤Ç¤¤ë¤è¤¦¤Ë¤·¤¿¤«¤Ã¤¿¤¬¡¢Â®ÅÙ¤ò¾å¤²¤ë¤È¸òº¹ÅÀ¤òǧ¼±¤·¤Ê¤¯¤Ê¤Ã¤¿¤ê¡¢µÕ¤ËµÞ¤Ê¥«¡¼¥Ö¤ò¸òº¹ÅÀ¤Èǧ¼±¤·¤Æ¤·¤Þ¤¤¡¢·ë²ÌŪ¤Ë¤¢¤Þ¤êÁ᤯¤Ï¤Ç¤¤Ê¤«¤«¤Ã¤¿¡£
¤Þ¤¿¡¢Àè¤Ë¤â½Ò¤Ù¤¿¤¬¥í¥Ü¥Ã¥È¼«ÂΤˤ¢¤Þ¤ê¼ê¤ò²Ã¤¨¤é¤ì¤Ê¤«¤Ã¤¿¤Î¤Ç¡¢¤â¤·¤«¤¹¤ë¤È®ÅÙ¤ÎÌäÂê¤â²ò·è¤Ç¤¤¿¤«¤â¤·¤ì¤Ê¤¤¡£
»Ï¤á¤ÏÁ°²ó¤Î»÷´é³¨¤Î²ÝÂê¤è¤ê¤ÏÆñ¤·¤¯¤Ê¤µ¤½¤¦¤Ë´¶¤¸¤¿¤¬¡¢¼ÂºÝ¤ä¤Ã¤Æ¤ß¤ë¤ÈÁ°²ó¤è¤ê³ÊÃÊ¤Ë¥×¥í¥°¥é¥à¤¬Ê£»¨¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¤Ê¤«¤Ê¤«¤¦¤Þ¤¯¤¤¤«¤Ê¤«¤Ã¤¿¡£Î㤨¤Ð¡¢Â®ÅÙ¤òÍî¤È¤·¤Æ¥é¥¤¥ó¥È¥ì¡¼¥¹¤òÀµ³Î¤Ë¤¹¤ë¤È¸òº¹ÅÀ¤òǧ¼±¤»¤º¤½¤Î¤Þ¤Þ¶Ê¤¬¤Ã¤Æ¤·¤Þ¤Ã¤¿¤ê¡¢¤«¤È¤¤¤Ã¤Æ®ÅÙ¤ò¾å¤²¤¹¤®¤Æ¤â¥«¡¼¥Ö¤ä¸òº¹ÅÀ¤ÇÌäÂ꤬µ¯¤¤Æ¤·¤Þ¤Ã¤¿¡£·ë²ÌŪ¤Ë¤Ï¤¦¤Þ¤¯¤¤¤Ã¤¿¤¬¡¢¤â¤Ã¤È»×¤¤Ä̤ê¤Ë¥×¥í¥°¥é¥à¤ò½ñ¤±¤ë¤è¤¦¤Ë¤Ê¤ê¤¿¤¤¤È»×¤Ã¤¿¡£