¥Ô¥ó¥Ý¥ó¶Ì¤Þ¤¿¤ÏÀĤÈÀ֤Υܡ¼¥ë¤ò±¿È¤·¤Æ¡¢½êÄê¤ÎÍÆ´ï¤ÎÃæ¤ËÆþ¤ì¤ë¡£ ¥Õ¥£¡¼¥ë¥É¤ÎÀâÌÀ ¥Õ¥£¡¼¥ë¥É¤Ï²ÝÂê2¤Ç»ÈÍѤ·¤¿»æ¤ò»ÈÍѤ¹¤ë¡£ À¸¶¨¤Î¤ªÊÛÅö¤Î»Í³Ñ¤¤¥×¥éÍÆ´ï2¤Ä¤ò¤½¤ì¤¾¤ì±ßÆâ¤ËÃÖ¤¡¢ÊÒÊý¤Ë¶Ì¤ò2¸ÄÆþ¤ì¤ë¡£ »Ä¤ê¤Î2¸Ä¤Î¶Ì¤Ï²ÝÂê2¤ÈƱ¤¸°ÌÃÖ¤ËÃÖ¤¯¡£¤½¤ÎºÝ¡¢¥´¥à¥¿¥¤¥ä¤ä¥×¥ì¡¼¥È¤Î¾å¤ËÃÖ¤¤¤Æ¤â¤è¤¤¡£ ¥×¥éÍÆ´ï¤Ë¤Ï¿§¤ò¤Ä¤±¤¿¤êʸ»ú¤äµ¹æ¤ò½ñ¤¤¤Æ¤â¤è¤¤¡£ ¥×¥éÍÆ´ï¤ÏξÌ̥ơ¼¥×Åù¤Ç¥Õ¥£¡¼¥ë¥É¤Ë¸ÇÄꤷ¤Æ¤â¤è¤¤¡£ 2Ëç¤Î»æ¤Î¶³¦¤Ë¤Ï¤½¤ì¤¾¤ìÉý1cm¡¢¹ç·×2cm¤Î¹õÀþ¤òÉÁ¤¤¤Æ¤â¤è¤¤¡£
¥×¥í¥°¥é¥ß¥ó¥°¤ÎÎ̤ò¸º¤é¤¹¤¿¤á¤ËÄÌ¿®¤ò¹Ô¤Ê¤Ã¤¿¤Î¤ÇRIS¤ò2ÂæÍѤ¤¤ë¤³¤È¤Ë¤Ê¤Ã¤¿¡£¤½¤ì¤Ë¤è¤Ã¤ÆÁ´ÂΤ¬Â礤¯¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¡£¤½¤Î2Âæ¤ÏÁ´ÂΤò¥¿¥¤¥ä¤òÆ°¤«¤¹Êý¤È¥Ô¥ó¥Ý¥óµå¤ò²ó¼ý¤¹¤ë¤Î¤ËÍѤ¤¤¿¥¢¡¼¥à¤òÆ°¤«¤¹¤Î¤Ç¤ï¤±¤¿¡£
Á´ÂΤ¬½Å¤¯¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¤¿¤á¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¾¯¤Ê¤¯¤·¤ÆÀ®¸ù¤Ç¤¤ë¤è¤¦¤Ë¤·¤¿¡£
#define signal_catch 1 #define signal_release 2 #define signal_end 3
¥Ü¡¼¥ë²ó¼ý¤Î¥µ¥Ö¥ë¡¼¥Á¥ó
sub CATCH() { ClearMessage(); until(Message()==signal_catch);//signal_catch¤¬Á÷¤é¤ì¤ë¤Þ¤ÇÂÔµ¡ // ¥¢¡¼¥à¤ò²¼¤²¤ë OnFwd(OUT_B); Wait(30); Off(OUT_B); Wait(100); SetPower(OUT_A,2); // ¤Ä¤«¤à OnRev(OUT_A); Wait(90); Off(OUT_A); Wait(100); // ¾å¤²¤ë OnRev(OUT_B); Wait(50); Off(OUT_B); Wait(100); // ¼ê¤ò¸µ¤ËÌ᤹ OnFwd(OUT_A); Wait(90); Off(OUT_A); Wait(100); // ¥³¥ó¥Ù¥¢¡¼¤Ç±ü¤ØÁ÷¤ë OnFwd(OUT_C); Wait(200); Off(OUT_C); Wait(100); SendMessage(signal_end);//Æ°ºî½ªÎ»¤ò¤ÎRIS¤ËÁ÷¿® }
È¢¤ËÆþ¤ì¤ë¥µ¥Ö¥ë¡¼¥Á¥ó
sub release() { ClearMessage(); until(Message()==signal_release); //signal_release¤¬Á÷¤é¤ì¤Æ¤¯¤ë¤Þ¤ÇÂÔµ¡ // ¥¢¡¼¥à²¼¤²¤ë OnFwd(OUT_B); Wait(30); Off(OUT_B); Wait(100); // ¥³¥ó¥Ù¥¢¡¼¤ÇÁ°¤ØÁ÷¤ë OnRev(OUT_C); Wait(200); Off(OUT_C); Wait(100); // ¥¢¡¼¥à¾å¤²¤ë OnRev(OUT_B); Wait(50); Off(OUT_B); Wait(100); SendMessage(signal_end);//Æ°ºî½ªÎ»¤ò¤ÎRIS¤ËÁ÷¿® }
¥á¥¤¥ó¥×¥í¥°¥é¥à
task main() { ClearMessage(); CATCH();//L'¤Ç¤Ä¤«¤à¡ release();//J'¤Ç¥ê¥ê¡¼¥¹£ CATCH();//L¤Ç¤Ä¤«¤à¥ CATCH();//J¤Ç¥ê¥ê¥Ñ¥Ã¥¯¤«¤é¤Ä¤«¤à¨ CATCH(); ClearMessage(); until(Message()==signal_release);//ª // ²¼¤¬¤ë OnFwd(OUT_B); Wait(30); Off(OUT_B); Wait(100); // Á°¤ØÁ÷¤ë OnRev(OUT_C); Wait(200); Off(OUT_C); Wait(100); // ¾å¤¬¤ê¤Ê¤¬¤éÁ÷¤ë OnRev(OUT_BC); Wait(50); Off(OUT_BC); Wait(100); SendMessage(signal_end); }
#define black 40 #define gray_black 44 #define gray 47 #define gray_white 50 #define white 60 #define go_ahead OnFwd(OUT_AC); #define turn_left OnFwd(OUT_A);Off(OUT_C); #define turn_right OnFwd(OUT_C);Off(OUT_A); #define circling_left OnRev(OUT_C);OnFwd(OUT_A); #define circling_right OnRev(OUT_A);OnFwd(OUT_C); #define signal_catch 1 #define signal_release 2 #define signal_end 3
int t;
¥µ¥Ö¥ë¡¼¥Á¥ó
sub follow_line()// ±¦Â¦¥È¥ì¡¼¥¹ { SetSensor(SENSOR_2,SENSOR_LIGHT); ClearTimer(0); while(FastTimer(0)<t) { if(SENSOR_2<black) { circling_right; } else if(SENSOR_2<gray_black) { turn_right; } else if(SENSOR_2<gray) { go_ahead; } else if(SENSOR_2<gray_white) { turn_left; } else if(SENSOR_2<white) { circling_left; } } Off(OUT_AC); Wait(100); }
¥á¥¤¥ó¥×¥í¥°¥é¥à 1¤ÄÌܤΥԥó¥Ý¥óµå
task main() { ClearMessage(); //Çò¤Ê¤éľ¿Ê¡¡¢¨£± while(SENSOR_2>gray) {OnFwd(OUT_AC);} Off(OUT_AC); Wait(100); //¹õ¤Ê¤éľ¿Ê while(SENSOR_2<gray) {OnFwd(OUT_AC);} Off(OUT_AC); Wait(100); while(SENSOR_2>gray) {OnFwd(OUT_AC);} Off(OUT_AC); Wait(100); while(SENSOR_2<gray) {OnFwd(OUT_AC);} Off(OUT_AC); Wait(100); while(SENSOR_2>gray) {OnFwd(OUT_AC);} Off(OUT_AC); Wait(100);//K'ÉÕ¶á¤ËÅþã t=90;follow_line();//¢¨£² Wait(100); SendMessage(signal_catch);// L'¤Ç¤Ä¤«¤àÌ¿Îá¤òÁ÷¤ë¡ ClearMessage(); until(Message()==signal_end);//¥¢¡¼¥à¤ÎÆ°ºî¤¬½ª¤ï¤ë¤Þ¤ÇÂÔµ¡ //90¡ëº¸Àû²ó¢ circling_left; Wait(102); Off(OUT_AC); // ¥Ü¡¼¥ë¤ò¥ê¥ê¥Ñ¥Ã¥¯¤ËÆþ¤ì¤ëÌ¿Îá¤òÁ÷¤ë£ SendMessage(signal_release); ClearMessage(); until(Message()==signal_end);
2¤ÄÌܤΥԥó¥Ý¥óµå
//¸å¤í¤Ë²¼¤¬¤ë OnRev(OUT_AC); Wait(30); Off(OUT_AC); //90¡ëº¸Àû²ó¤ circling_left; Wait(102); Off(OUT_AC); //Çò¤Ê¤éľ¿Ê¡¡¢¨£± while(SENSOR_2>gray) {OnFwd(OUT_AC);} Off(OUT_AC); Wait(100); //¹õ¤Ê¤éľ¿Ê while(SENSOR_2<gray) {OnFwd(OUT_AC);} Off(OUT_AC); Wait(100); while(SENSOR_2>gray) {OnFwd(OUT_AC);} Off(OUT_AC); Wait(100); while(SENSOR_2<gray) {OnFwd(OUT_AC);} Off(OUT_AC); Wait(100); while(SENSOR_2>gray) {OnFwd(OUT_AC);} Off(OUT_AC); Wait(100); turn_right;//±¦¤Ë²óž Wait(100); //Çò¤Ê¤éľ¿Ê¡¡¢¨£± while(SENSOR_2>gray) {OnFwd(OUT_AC);} Off(OUT_AC); Wait(100); //¹õ¤Ê¤éľ¿Ê while(SENSOR_2<gray) {OnFwd(OUT_AC);} Off(OUT_AC); Wait(100); t=150;follow_line();//¢¨£² SendMessage(signal_catch);// L¤Ç¤Ä¤«¤àÌ¿Îá¤òÁ÷¤ë¥ ClearMessage() ; until(Message()==signal_end);
3¡¤4¤ÄÌܤΥԥó¥Ý¥óµå
//90¡ëº¸Àû²ó¦ circling_left; Wait(102); Off(OUT_AC); //¸å¤í¤Ë²¼¤¬¤ë§ OnRev(OUT_AC); Wait(23); Off(OUT_AC); SendMessage(signal_catch);// ¥ê¥ê¥Ñ¥Ã¥¯¤Ç¤Ä¤«¤àÌ¿Îᣱ¨ ClearMessage(); until(Message()==signal_end); Wait(100); SendMessage(signal_catch);// ¥ê¥ê¥Ñ¥Ã¥¯¤Ç¤Ä¤«¤àÌ¿Îᣲ ClearMessage(); until(Message()==signal_end);
È¢¤ËÆþ¤ì¤ë¤Þ¤Ç
//90¡ëº¸Àû²ó¦ circling_left; Wait(102); Off(OUT_AC); //¸å¤í¤Ë²¼¤¬¤ë§ OnRev(OUT_AC); Wait(23); Off(OUT_AC); SendMessage(signal_catch);// ¥ê¥ê¥Ñ¥Ã¥¯¤Ç¤Ä¤«¤àÌ¿Îᣱ¨ ClearMessage(); until(Message()==signal_end); Wait(100); SendMessage(signal_catch);// ¥ê¥ê¥Ñ¥Ã¥¯¤Ç¤Ä¤«¤àÌ¿Îᣲ ClearMessage(); until(Message()==signal_end);
¥ê¥Ï¡¼¥µ¥ë¤Î»þÅÀ¤Ç¤Ï3¤Ä¤Þ¤¿¤Ï4¤Ä¤¤¤ì¤ë¤³¤È¤¬¤Ç¤¤¿¤¬¡¢ËÜÈ֤Ϥ¦¤Þ¤¯¹Ô¤«¤Ê¤«¤Ã¤¿¡£¤½¤ÎÅÀ¤Ï²ù¤·¤¤¤¬ºÇ¸å¤Þ¤Ç¤ä¤ê¤¤ì¤¿¤³¤È¤Ï¤¦¤ì¤·¤¤¡£