¾Ü¤·¤¯¤Ï2017a/Mission3
¤Ï¤¸¤á¤Ï¥¢¡¼¥àÉôʬ¤Ë¥¿¥¤¥ä¤ò¼è¤êÉÕ¤±¡¢¤½¤Î¥¿¥¤¥ä¤ò²óž¤µ¤¨¤ë¤³¤È¤Ë¤è¤Ã¤Æ¶õ¤´Ì¤ò»ý¤Á¾å¤²¤ë¤È¤¤¤¦¥í¥Ü¥Ã¥È¤òºî¤Ã¤¿¤¬¡¢¤³¤ì¤À¤È°ÂÄꤷ¤Æ»ý¤Á¾å¤²¤ë¤³¤È¤¬¤Ç¤¤Ê¤¤¤È¤¤¤¦¤³¤È¤¬¤ï¤«¤ê¡¢¥¢¡¼¥à¤È¾å²¼¤¹¤ëÉôʬ¤òÊ̤ˤ·¤¿¡£¤®¤¶¤®¤¶¤·¤¿Ä¹¤¤ËÀ¤È¤®¤¶¤®¤¶¤·¤¿±ßÈĤò¤«¤ß¹ç¤ï¤»¡¢¥â¡¼¥¿¡¼¤òÆ°¤«¤·¤Æ¥¢¡¼¥à¤ò¾å²¼¤µ¤»¤¿¡£
ÄêµÁ
#define go_forward OnFwd(OUT_AC);//Á°¿Ê #define turn_right OnFwd(OUT_A);//±¦ÀÞ #define turn_left OnFwd(OUT_C);//º¸ÀÞ #define migisenkai OnFwd(OUT_A); OnRev(OUT_C);//±¦Àû²ó #define hidarisenkai OnFwd(OUT_C); OnRev(OUT_A);//º¸Àû²ó #define power(s) SetPower(OUT_AC,s); //¥â¡¼¥¿¡¼¤Î½ÐÎϤ¬Êѹ¹²Äǽ #define sound1 PlaySound(SOUND_UP); #define sound2 PlaySound(SOUND_DOWN);Wait(100); #define GO(t) OnFwd(OUT_AC); Wait(t); Off(OUT_AC);//Á°¿Ê»þ´ÖÊѹ¹²Äǽ #define SIGNALGRAB 100 #define SIGNALBACK 200 #define back(u) OnRev(OUT_AC); Wait(u); Off(OUT_AC);//¸åÂà»þ´ÖÊѹ¹²Äǽ
¥µ¥Ö¥ë¡¼¥Á¥ó sub trace2()//¸òº¹ÅÀ¤ÎȽÃǤʤɤϲÝÂ궤λþ¤ÈƱÍÍ {
ClearTimer(0);
while (FastTimer(0)<=25){ if (SENSOR_1 > 49){//±¦Àû²ó migisenkai; ClearTimer(0); } else if (SENSOR_1 > 44){//±¦ÀÞ turn_right; ClearTimer(0); } else if (SENSOR_1 > 40){//Á°¿Ê go_forward; ClearTimer(0); } else if (SENSOR_1 > 36){//º¸ÀÞ turn_left; ClearTimer(0); } else if (SENSOR_1 > 33){//º¸Àû²ó hidarisenkai;//¥¿¥¤¥Þ¤ò¥ê¥»¥Ã¥È¤·¤Ê¤¤ } } Off(OUT_AC);
}
sub hidari1() {
sound1; go_forward; Wait(20); hidarisenkai; Wait(40); turn_left; Wait(30);
}
sub hidari2() {
sound2; go_forward; Wait(20); hidarisenkai; Wait(40); turn_left; Wait(30);
}
¥¿¥¹¥¯¥á¥¤¥ó task main() {
SetSensor(SENSOR_1, SENSOR_LIGHT); power(4);//¥â¡¼¥¿¡¼¤Î½ÐÎϤòÄ´À°¡£²ÝÂ궤λþ¤Ï0¤Ç¤¢¤Ã¤¿¤¬¡¢0¤Î¾ì¹ç¤Ç¤Ï½ÐÎϤ¬Â¤ê¤Ê¤«¤Ã¤¿¤Î¤Ç¡¢Á°²ó¤Î²ÝÂê¤Î¤È¤¤è¤ê¤â½ÐÎϤò¹â¤á¤¿¡£ ClearMessage();
GO(100);//¥¹¥¿¡¼¥ÈÏȤ«¤éÁ°¿Ê
trace2();//A-F¶è´Ö hidari1();//F¤òº¸ÀÞ
trace2();//F-Q¶è´Ö hidari2();//Q¤òº¸Êý¸þ
trace2();//Q-R¶è´Ö hidari1();//R¤òº¸ÀÞ¤·¡¢T¤Ë¸þ¤«¤¦
trace2();//R-T GO(200);//Á°¿Ê¤·¤Æ¥´¡¼¥ë¤ÎÃæ¤ËÆþ¤ë
SendMessage(SIGNALGRAB);//¥´¡¼¥ë¤Î°ÌÃÖ¤ËÅþÃ夷¤¿¤³¤È¤òÃΤ餻¤ë¡£¥¢¡¼¥à¦¤Ï¤³¤ì¤ò¼õ¤±¼è¤Ã¤¿¤é¥¢¡¼¥à¤òÆ°¤«¤·¤Æ´Ì¤¬¥´¡¼¥ë¤ÎÎΰè¤ËÆþ¤ë¤è¤¦¤Ë¤¹¤ë while(true){ until (Message() == SIGNALBACK);//SIGNALBACK¤ò¼õ¿®¤¹¤ë¤Þ¤ÇÂÔ¤Ä back(300);//¸åÂह¤ë }
}
¢¬
¥¢¡¼¥à¤Î¥×¥í¥°¥é¥à ¢÷
ÄêµÁÉôʬ
#define grab OnFwd(OUT_C); Wait(100); Off(OUT_C);//¥¢¡¼¥à¤Ç´Ì¤ò¤Ä¤«¤à #define relese OnRev(OUT_C); Wait(100); Off(OUT_C);//¥¢¡¼¥à¤Ç´Ì¤òÎ¥¤¹ #define rift_up OnFwd(OUT_A); Wait(700); Off(OUT_A);//¥ê¥Õ¥È¤ò»ý¤Á¾å¤²¤ë #define rift_down1 OnRev(OUT_A); Wait(200); Off(OUT_A);//¥ê¥Õ¥È¤ò¼¡¤Î´Ì¤Î¹â¤µ¤Þ¤Ç²¼¤²¤ë #define rift_down2 OnRev(OUT_A); Wait(300); Off(OUT_A);//¥ê¥Õ¥È¤ò¼¡¤Î´Ì¤Î¤Ä¤«¤à¹â¤µ¤Þ¤Ç²¼¤²¤ë¡£¤Ä¤Þ¤ê¤Ï¤¸¤á¤Î¹â¤µ¤Þ¤Ç²¼¤²¤ë #define SIGNALGRAB 100 #define SIGNALBACK 200 #define grab2(s) OnFwd(OUT_C); Wait(s); Off(OUT_C);//´Ì¤òÄϤà»þ´ÖÊѹ¹²Äǽ #define relese(t) OnRev(OUT_C); Wait(t); Off(OUT_C);//´Ì¤òÎ¥¤¹»þ´ÖÊѹ¹²Äǽ
¥¿¥¹¥¯¥á¥¤¥ó task main() {
SetSensor(SENSOR_1,SENSOR_TOUCH);//¥»¥ó¥µ¡¼1¤Ë¥¿¥Ã¥Á¥»¥ó¥µ ClearMessage(); int count;//ÊÑ¿ô¤òÄêµÁ count=0;
while (count<1){//count¤¬1̤Ëþ¤Î»þ¥ë¡¼¥×¤ËÆþ¤ë ClearMessage();//Message¤ÎÃͤò0¤Ë½é´ü²½ if (Message() == SIGNALGRAB){//SIGNALGRAB¤ò¼õ¿®¤·¤¿¤écount¤Ë1¤¬Â¤µ¤ì¤ë¡£¼õ¿®¤·¤¿¤é¥ë¡¼¥×¤òÈ´¤±½Ð¤¹¡£ count++; } else count = 0;//¤½¤¦¤Ç¤Ê¤±¤ì¤Ðcount¤Ï0 } grab2(50);//´Ì¤ò¥´¡¼¥ëÆâ¤Ë¤Þ¤È¤á¤ë¤¿¤á¤Ë¥¢¡¼¥à¤òÆ°¤«¤¹ relese(70);//Â礤á¤Ë¥¢¡¼¥à¤ò³«¤¤¤Æ´Ì¤ò´°Á´¤ËÎ¥¤¹ SendMessage(SIGNALBACK);//¸åÂह¤ë¤è¤¦¤ËÅÁ¤¨¤ë¡£
º£²ó¤Î²ÝÂê¤Ï¤È¤Æ¤âÆñ¤·¤«¤Ã¤¿¡£¥í¥Ü¥Ã¥È¤òºî¤ë¤Î¤Ë¤«¤Ê¤ê¤Î»þ´Ö¤òÈñ¤ä¤·¤Æ¤·¤Þ¤¤¡¢¥×¥í¥°¥é¥ß¥ó¥°¤ò¹Í¤¨¤ë»þ´Ö¤¬Í¾¤ê¤È¤ì¤Ê¤«¤Ã¤¿¡£·ë²Ì¡¢ËÜÈ֤Ǥϻפ¤Ä̤ê¤ÎÆ°¤¤¬¤Ç¤¤Ê¤«¤Ã¤¿¡£»ÄÇ°¤À¤Ã¤¿¤¬³Ú¤·¤ó¤Ç¼è¤êÁȤ᤿¤Î¤ÇÎɤ«¤Ã¤¿¡£