Ìܼ¡
¥Ü¡¼¥ë¤ò±¿¤Ö¤¿¤á¤Î¥í¥Ü¥Ã¥È¤òºîÀ®¤·¡¢¥Ü¡¼¥ë¤ò±¿È¤·¤Æ½êÄê¤ÎÍÆ´ï¤ÎÃæ¤ËÆþ¤ì¤ë¡£
°Ê²¼¤ÎÆ°ºî¤ÎÀºÅÙ¡¦¥¹¥Ô¡¼¥É¡¦³Î¼ÂÀ¤Ê¤É¤ò´Þ¤á¤¿µ»½ÑŪ¤Ê¹©Éפä·Ý½ÑÀ¤Ë¤Ä¤¤¤Æ¾¤ÎÁ´¤Æ¤Î¥Á¡¼¥à(5¥Á¡¼¥à)¤¬20ÅÀËþÅÀ¤ÇºÎÅÀ¤·¡¢¤½¤ÎÊ¿¶ÑÅÀ¤òµá¤á¤ë¡£ ÆÀÅÀ¤ÎÌܰ¡§
»ä¤¿¤Á¤Î¥í¥Ü¥Ã¥È¤Ï¥Ü¡¼¥ë¤ò°ì¤Ä¤º¤Ä±¿È½ÐÍè¤ë¤è¤¦¤Ê¥í¥Ü¥Ã¥È¤òºîÀ®¤·¤Þ¤·¤¿¡£
¤½¤Î¤¿¤á¤¤Á¤ó¤È¾®²ó¤ê¤¬¤¤¯¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ë¡¢¥³¥ó¥Ñ¥¯¥È¤Ê·Á¤Ë»Å¾å¤²¤·¤Þ¤·¤¿¡£
¤Ê¤ë¤Ù¤¯¾®¤µ¤¯¥³¥ó¥Ñ¥¯¥È¤Ëºî¤Ã¤¿¡£ËÜÂΤòÇØÌ̤¢¤ï¤»¤Ë¤·¡¢ÌµÂ̤ʶõ´Ö¤ò̵¤¯¤·¤¿¡£
¥»¥ó¥µ¡¼¤Ï¼ÖÎؤ˶á¤Å¤±¡¢¤¤Á¤ó¤È¾®²ó¤ê¤¬²Äǽ¤Ê¥»¥ó¥µ¡¼¸¡ÃΤò½ÐÍè¤ë¤è¤¦¤Ë¤·¤¿¡£
¥¢¡¼¥à¤ÎÉôʬ¤âËÜÂÎƱÍÍ¥·¥ó¥×¥ë¤Ë¤·¡¢¥â¡¼¥¿¡¼¤ËľÀÜÉôÉʤò¤Ä¤±¡¢²óž¤µ¤»¥¢¡¼¥à¤òÆ°¤«¤·¡¢
¥Ü¡¼¥ë¤ò¤Ä¤«¤ó¤À¤êÎ¥¤·¤¿¤ê½ÐÍè¤ë¤è¤¦¤Ê¥¯¥ì¡¼¥ó·¿¤Î¥¢¡¼¥à¤ËÍî¤ÁÃ夤¤¿¡£
¥¢¡¼¥à¤ò°ìÈÖ¾å¤Þ¤Ç¾å¤²¤ë¤¿¤á¤Ë¡¢Êä½õ¤È¤·¤ÆÎØ¥´¥à¤ò»È¤Ã¤¿¡£
»ä¤¿¤Á¤Ï¥Ü¡¼¥ë¤ò°ì¤Ä¤º¤Ä±¿È¤¹¤ë¥í¥Ü¥Ã¥È¤òºî¤Ã¤¿¤¿¤á¡¢¥Ü¡¼¥ë¤ò¤Ä¤«¤ß
¥È¥ì¡¼¤Ë»ý¤Ã¤Æ¤¤¤¡¢¥Ü¡¼¥ë¤òÎ¥¤¹¤È¤¤¤¦¹ÔÆ°¤ò¹ç·×£´²ó¹Ô¤¦É¬Íפ¬¤¢¤ë¡£
¤½¤Î¤¿¤á¼¡¤Î¤è¤¦¤Ê¥ë¡¼¥È¤Ç¥í¥Ü¥Ã¥È¤òÆ°¤«¤¹¤³¤È¤Ë¤·¤¿¡£
¡A'¤ò½Ðȯ¤·L'¤Î¥Ü¡¼¥ë¤òÄϤߡ¤Àû²ó¤·¤ÆÍÆ´ï¤ËÆþ¤ì¤ë¡¥
¢¼¡¤Ë¡¤¤½¤³¤«¤éľÀþ¤òÆͤÃÀڤäÆÍÆ´ï¤ÎÃæ¤Î¥Ô¥ó¥Ý¥ó¶Ì¤òÄϤߥ´¡¼¥ë¤Ë¤¢¤ëÍÆ´ï¤ËÆþ¤ìÂؤ¨¤ë¡¥
£Æ±¤¸¤¯ÍÆ´ï¤ÎÃæ¤Î¥Ü¡¼¥ë¤ò¥´¡¼¥ë¤ÎÍÆ´ï¤Ë»ý¤Ã¤Æ¤¤¤Æþ¤ì¤ë¡¥
¤ºÇ¸å¤Ë¡¤L¤Ë¤¢¤ë¥Ü¡¼¥ë¤òÄϤߥ´¡¼¥ë¤ÎÍÆ´ï¤ËÆþ¤ì¤ë
º£²ó¤ÏËÜÂΤò£²µ¡»È¤¤¡¢
2µ¡´Ö¤ÇÄÌ¿®¤¹¤ë¤¿¤á¤Ë°Ê²¼¤Î¥Þ¥¯¥í¤òÄêµÁ¤·¤¿¡£
#define SIGNALON1 11 #define SIGNALOFF1 12 #define SIGNALON2 13 #define SIGNALOFF2 14
#define arm_down OnFwd(OUT_A,25);Wait(1500);Off(OUT_A); //¥¢¡¼¥à¤ò²¼¤²¤ë #define arm_up OnRev(OUT_A,35);Wait(1500);Off(OUT_A); //¥¢¡¼¥à¤ò¾å¤²¤ë
#define SIGNALON1 11 #define SIGNALOFF1 12 #define SIGNALON2 13 #define SIGNALOFF2 14 #define CONN 1 //¥Þ¥¹¥¿¡¼¤ÎÀܳÈÖ¹æ task main() { int msg; //¼õ¤±¼è¤Ã¤¿Ãͤò³ÊǼ¤¹¤ëÊÑ¿ô while(true){ ReceiveRemoteNumber(MAILBOX1,true,msg); //MAILBOX1¤ÎÃͤò¼õ¤±¼è¤êmsg¤Ë³ÊǼ if(msg==SIGNALON1){¡¡¡¡¡¡¡¡¡¡¡¡¡¡//SIGNALON1¤ò¼õ¿®¤·¤¿¤È¤ OnRev(OUT_A,20);Wait(1000);¡¡//¥Ü¡¼¥ë¤òÄϤà }else if(msg==SIGNALOFF1){¡¡¡¡¡¡ //SIGNALOFF1¤ò¼õ¿®¤·¤¿¤È¤ Off(OUT_A);¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¥â¡¼¥¿A¤ò»ß¤á¤ë }else if(msg==SIGNALON2){¡¡¡¡¡¡¡¡//SIGNALON2¤ò¼õ¿®¤·¤¿¤È¤ OnFwd(OUT_A,20);Wait(1000);¡¡//¥Ü¡¼¥ë¤òÊü¤¹ }else if(msg==SIGNALOFF2){¡¡¡¡¡¡ //SIGNALOFF2¤ò¼õ¿®¤·¤¿¤È¤ Off(OUT_A);¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¥â¡¼¥¿A¤ò»ß¤á¤ë } } }
»ä¤¿¤Á¤Ï¡Ö´°Á´¤Ë¿¿¤ÃÇò¡×¡¢¡ÖÇò¤È¶Ìܤδ֡ס¢¡Ö¶Ìܡס¢¡Ö¹õ¤È¶Ìܤδ֡ס¢
¡Ö´°Á´¤Ë¹õ¡×¤Î£µ¤Ä¤ÎÉôʬ¤Ë¿§¤òʬ¤±¤Æ¬¤Ã¤¿¡£
¸÷¥»¥ó¥µ¡¼¤Ç¸¡ÃΤ¹¤ë¿ôÃͤò°Ê²¼¤Î¥Þ¥¯¥í¤ÇÄêµÁ¤·¤¿¡£
#define black 30 #define white 60 #define lightgray 50 #define darkgray 39 #define center 45
¤½¤Î¾ÍÍ¡¹¤ÊÆ°ºî¤ò°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤·¤¿¡£
#define turn_right OnFwd(OUT_C,25);OnRev(OUT_B,23); //±¦ÀÞ #define turn_left OnFwd(OUT_B,28);OnRev(OUT_C,20); //º¸ÀÞ #define rotate_right OnFwd(OUT_C,25);OnRev(OUT_B,22); //±¦Àû²ó #define rotate_left OnFwd(OUT_B,28);OnRev(OUT_C,15); //º¸Àû²ó #define go_straight OnFwd(OUT_B,23);OnFwd(OUT_C,20); //ľ¿Ê #define go_straight2 OnFwd(OUT_B,20);OnFwd(OUT_C,17); //K'¤«¤éL'¤Ç¤Î½ÐÎϼå¤á¤Îľ¿Ê #define turn OnRev(OUT_C,20);OnFwd(OUT_B,28);Wait(3200);Off(OUT_BC); //L'¤Î¥Ü¡¼¥ëÄϤó¤Ç ¤«¤éÆþ¤ì¤ë¤Þ¤Ç¤ÎÀû²ó #define turn2 OnRev(OUT_B,28);OnFwd(OUT_C,20);Wait(1500);Off(OUT_BC); //¥Ü¡¼¥ë¤ÎÆþ¤Ã¤Æ¤ë¥È¥ì¡¼¤Ø¤Î¤ï¤º¤«¤ÊÄ´À° #define sakittyo OnFwd(OUT_C,20);OnFwd(OUT_B,23);Wait(1150);Off(OUT_BC); //¥Ü¡¼¥ë¤¬Æþ¤Ã¤Æ¤ë¥È¥ì¡¼Á°¤Ç¤Î¤ï¤º¤«¤ÊÁ°¿Ê #define turn3 OnRev(OUT_B,30);Wait(4800);Off(OUT_BC); //¥È¥ì¡¼¤Î¥Ü¡¼¥ë¤òÄϤó¤À¸å¤ÎÊý¸þž´¹ #define turn4 OnRev(OUT_B,30);Wait(5200);Off(OUT_BC); // #define back OnRev(OUT_C,20);OnRev(OUT_B,28);Wait(3000);Off(OUT_BC); //ºÇ¸å¥È¥ì¡¼¤Ë¿¨¤ì¤Ê¤¤¤è¤¦¤Ë¾¯¤·Î¥¤ì¤ë
sub followline_L(int stop_time) { long t0=CurrentTick(); while(CurrentTick()-t0<stop_time){ //¸½ºß¤Î»þ¹ï¤¬°ìÄê¤ÎÃͤòĶ¤¨¤ë¤Þ¤Ç if(SENSOR_1<black){ //¥»¥ó¥µ¡¼¤¬¹õ¤Î»þ rotate_left; //º¸Àû²ó }else if(SENSOR_1<darkgray){ //¥»¥ó¥µ¡¼¤¬¹õ³¥¤Ê¤é turn_left; //º¸ÀÞ }else if(SENSOR_1>lightgray){ //¥»¥ó¥µ¡¼¤¬Çò³¥¤Ê¤é turn_right; //±¦ÀÞ t0=CurrentTick(); //»þ´Ö¤ò¥ê¥»¥Ã¥È }else if(SENSOR_1<center){ //ÌÀ¤ë¤µ45°Ê²¼¤Ç go_straight; //ľ¿Ê t0=CurrentTick(); //»þ´Ö¤ò¥ê¥»¥Ã¥È }else{ //¤½¤ì°Ê³°¤Ï rotate_right; //±¦Àû²ó t0=CurrentTick(); //»þ´Ö¤ò¥ê¥»¥Ã¥È } } Off(OUT_BC); //»þ¹ï¤¬°ìÄê¤ÎÃͤòĶ¤¨¤ë¤ÈÄä»ß Wait(1000); //1ÉôÖÄä»ß }
sub followline_R(int stop_time) { long t0=CurrentTick(); while(CurrentTick()-t0<stop_time){ //¸½ºß¤Î»þ¹ï¤¬°ìÄê¤ÎÃͤòĶ¤¨¤ë¤Þ¤Ç if(SENSOR_1<black){ //¥»¥ó¥µ¡¼¤¬¹õ¤Î»þ rotate_right; //±¦Àû²ó }else if(SENSOR_1<darkgray){ //¥»¥ó¥µ¡¼¤¬¹õ³¥¤Ê¤é turn_right; //±¦ÀÞ }else if(SENSOR_1>lightgray){ //¥»¥ó¥µ¡¼¤¬Çò³¥¤Ê¤é turn_left; //º¸ÀÞ t0=CurrentTick(); //»þ´Ö¤ò¥ê¥»¥Ã¥È }else if(SENSOR_1<center){ //¥»¥ó¥µ¡¼¤¬45°Ê²¼¤Ê¤é go_straight; //ľ¿Ê t0=CurrentTick(); //»þ´Ö¤ò¥ê¥»¥Ã¥È }else{ //¤½¤ì°Ê³°¤Ï rotate_left; //º¸Àû²ó t0=CurrentTick(); //»þ´Ö¤ò¥ê¥»¥Ã¥È } } Off(OUT_BC); //°ìÄê¤Î»þ´Ö¤òĶ¤¨¤ë¤ÈÄä»ß Wait(1000); //°ìÉôÖÄä»ß }
Ëô¡¢K,L´Ö¡¢K`,L`´Ö¤Ç¤Ï¤½¤Î¤Þ¤Þ¤Î½ÐÎϤÇľ¿Ê¤·¤Æ¤·¤Þ¤¦¤È¥Ü¡¼¥ë¤Ë¿¨¤ì¤¿ºÝ¤Ë
¥Ü¡¼¥ë¤òÈô¤Ð¤·¤Æ¤·¤Þ¤¦²ÄǽÀ¤¬¤¢¤ë¤¿¤á¡¢¤³¤ÎÉôʬ¤À¤±Ä¾¿Ê¤Î½ÐÎϤ¬¼å¤¯¤Ê¤ë¤è¤¦¤Ê
±¦Â¦¥é¥¤¥ó¥È¥ì¡¼¥¹¤Ë¤·¤¿¡£¤½¤ì¤¬²¼µ¤Î¥×¥í¥°¥é¥à¤Ç¤¢¤ë¡£
sub followline_R2(int stop_time) { long t0=CurrentTick(); while(CurrentTick()-t0<stop_time){ //»þ¹ï¤¬¤¢¤ë°ìÄê¤ÎÃͤè¤ê¾®¤µ¤¤¤È¤ if(SENSOR_1<black){ //¹õ¤Ê¤é rotate_right; //±¦Àû²ó t0=CurrentTick(); //»þ´Ö¤ò¥ê¥»¥Ã¥È }else if(SENSOR_1<darkgray){ //³¥¹õ¿§¤Ê¤é turn_right; //±¦ÀÞ t0=CurrentTick(); //»þ´Ö¤ò¥ê¥»¥Ã¥È }else if(SENSOR_1>lightgray){ //³¥Çò¿§¤Ê¤é turn_left; //º¸ÀÞ }else if(SENSOR_1<center){ //ÌÀ¤ë¤µ45°Ê²¼¤Ç go_straight2; //¤æ¤Ã¤¯¤êľ¿Ê t0=CurrentTick(); //»þ´Ö¤ò¥ê¥»¥Ã¥È }else{ //¤½¤ì°Ê³°¤Ê¤é rotate_left; //º¸Àû²ó } } Off(OUT_BC); //Ää»ß Wait(2000); //2ÉôÖÄä»ß }
Æó¤Ä¤Î¥Þ¥Ã¥×¤ò²£ÃǤ¹¤ëºÝ¡¢¹õ¤ò¸«¤Ä¤±¤ë¤Þ¤Çľ¿Ê¤¹¤ë¥×¥í¥°¥é¥à¤ÈÇò¤ò¸«¤Ä¤±¤ë¤Þ¤Çľ¿Ê¤¹¤ë
¥×¥í¥°¥é¥à¤ò¸ò¸ß¤ËÁȤ߹ç¤ï¤»¤Æ²£ÃǤ¹¤ë
sub Blackto_White() { while(SENSOR_1<lightgray){¡¡//¸÷¥»¥ó¥µ¡¼¤ÎÃͤ¬Çò³¥¤è¤ê¾®¤µ¤¤¤È¤ OnFwd(OUT_C,25);¡¡¡¡¡¡¡¡¡¡¡¡ OnFwd(OUT_B,25);¡¡¡¡¡¡¡¡¡¡¡¡//ľ¿Ê } Off(OUT_BC);¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//Çò³¥¤è¤êÂ礤¯¤Ê¤ë¤È»ß¤Þ¤ë }
sub Whiteto_Black() { while(SENSOR_1>darkgray){¡¡//¸÷¥»¥ó¥µ¡¼¤ÎÃͤ¬¹õ³¥¤è¤ê¤âÂ礤¤¤È¤ OnFwd(OUT_C,25);¡¡¡¡¡¡¡¡¡¡ OnFwd(OUT_B,25); //ľ¿Ê } Off(OUT_BC); //¹õ³¥¤è¤ê¤âÂ礤¯¤Ê¤ë¤È»ß¤Þ¤ë }Ëô¡¢¥é¥¤¥ó¥È¥ì¡¼¥¹¤Î±¦Â¦¤Èº¸Â¦¤òÆþ¤ìÂؤ¨¤ë»þ¤Ë»È¤¦²£ÃÇ¤Î¥×¥í¥°¥é¥à¤¬¤¢¤ë¡£
sub Whiteto_Black_R() { while(SENSOR_1>darkgray){¡¡//¸÷¥»¥ó¥µ¡¼¤ÎÃͤ¬¹õ³¥¤è¤ê¤âÂ礤¤¤È¤ OnFwd(OUT_C,25);¡¡¡¡¡¡¡¡¡¡ OnRev(OUT_B,25); //±¦Àû²ó } Off(OUT_BC); //¹õ³¥¤è¤ê¤â¾®¤µ¤¯¤Ê¤ë¤È»ß¤Þ¤ë }
sub Whiteto_Black_L() { while(SENSOR_1>black){¡¡//¸÷¥»¥ó¥µ¡¼¤ÎÃͤ¬¹õ¤è¤êÂ礤¤¤È¤ OnFwd(OUT_B,25); OnRev(OUT_C,25); //º¸Àû²ó } Off(OUT_BC); //¹õ¤è¤ê¾®¤µ¤¤¤È¤ }
task main() { SetSensorLight(S1); //ü»Ò£±¤Ë¸÷¥»¥ó¥µ¡¼ RemoteStartProgram(CONN,"kodomo.nxc");¡¡¡¡//¥¹¥ì¡¼¥Ö¤Î¥×¥í¥°¥é¥à¤òµ¯Æ° followline_R(200); Blackto_White(); followline_L(150); Blackto_White_R(); followline_R2(150); SendRemoteNumber(CONN,MAILBOX1,SIGNALON1); //MAILBOX1¤ËSIGNALON1¤òÁ÷¿® Wait(1000); arm_up; turn; SendRemoteNumber(CONN,MAILBOX1,SIGNALON2); //MAILBOX1¤ËSIGNALON2¤òÁ÷¿® Wait(1000); followline_R(150); Blackto_White_L(); followline_L(100); Blackto_White(); Whiteto_Black(); Blackto_White(); Whiteto_Black(); Blackto_White(); Whiteto_Black(); Blackto_White(); followline_R(150); Blackto_White(); turn2; sakittyo; arm_down; SendRemoteNumber(CONN,MAILBOX1,SIGNALON1); //MAILBOX1¤ËSIGNALON1¤òÁ÷¿® Wait(1000); arm_up; turn3; Whiteto_Black(); Blackto_White(); Whiteto_Black(); Blackto_White(); followline_R(200); Blackto_White(); turn2; SendRemoteNumber(CONN,MAILBOX1,SIGNALON2); //MAILBOX1¤ËSIGNALON2¤òÁ÷¿® Wait(1000); turn3; Whiteto_Black(); Blackto_White(); Whiteto_Black(); Blackto_White(); followline_R(200); Blackto_White(); turn2; sakittyo; arm_down; SendRemoteNumber(CONN,MAILBOX1,SIGNALON1); //MAILBOX1¤ËSIGNALON1¤òÁ÷¿® Wait(1000); arm_up; turn3; Whiteto_Black(); Blackto_White(); Whiteto_Black(); Blackto_White(); Blackto_White_R(); followline_R(200); Blackto_White(); turn2; SendRemoteNumber(CONN,MAILBOX1,SIGNALON2); //MAILBOX1¤ËSIGNALON2¤òÁ÷¿® Wait(1500); turn4; arm_down Whiteto_Black(); Blackto_White(); Whiteto_Black(); Blackto_White(); followline_L(200); Blackto_White(); followline_R(200); Blackto_White(); followline_L(200); Blackto_White(); followline_R(200); Blackto_White(); followline_L(150); Blackto_White_R(); followline_R2(125); SendRemoteNumber(CONN,MAILBOX1,SIGNALON1); //MAILBOX1¤ËSIGNALON1¤òÁ÷¿® Wait(1000); arm_up; turn; followline_R(100); Blackto_White_L(); followline_L(100); Blackto_White(); Whiteto_Black(); Blackto_White(); Whiteto_Black(); Blackto_White(); Whiteto_Black(); Blackto_White(); followline_R(200); Blackto_White(); turn2; sakittyo; SendRemoteNumber(CONN,MAILBOX1,SIGNALON2); //MAILBOX1¤ËSIGNALON2¤òÁ÷¿® Wait(1000); }
¥´¡¼¥ë¤Î¥È¥ì¡¼¤òGT¡¤¤â¤È¤â¤È¥Ü¡¼¥ë¤òÆþ¤ì¤Æ¤¢¤ë¥È¥ì¡¼¤òST¤È¸Æ¤Ö¤È¡¤ °ì¤ÄÌܤβô¤Ï¡¤M'¤«¤é¥¹~¥¿¡¼¥È¤·L'¤Î¥Ü¡¼¥ë¤òÄϤó¤ÇGT¤ËÆþ¤ì¤ë¤Þ¤Ç¤Î¥×¥í¥°¥é¥à Æó¤ÄÌܤβô¤Ï¡¤L'¤Î¥Ü¡¼¥ë¤òÆþ¤ì¤¿¸å~ST¤Þ¤Ç¹Ô¤¡¤¥Ü¡¼¥ë¤òÄϤà¤Þ¤Ç¤Î¥×¥í¥°¥é¥à »°¤ÄÌܤβô¤Ï¡¤ST¤«¤éGT¤Þ¤Ç¹Ô¤¡¤¥Ü¡¼¥ë¤òÆþ¤ì¤ë~¥×¥í¥°¥é¥à »Í¤ÄÌܤβô¤Ï¡¤¥Ü¡¼¥ë¤òÆþ¤ì¤Æ¤«¤é¤Þ¤¿ST¤Þ¤Ç¹Ô¤¡¤¥Ü¡¼¥ë¤òÄϤà¤Þ¤Ç¤Î¥×¥í¥°¥é¥à ~¸Þ¤ÄÌܤβô¤Ï¡¤¥Ü¡¼¥ë¤òÄϤó¤Ç¤«¤éGT¤Þ¤Ç¹Ô¤¥´¡¼¥ë¤¹¤ë¤Þ¤Ç¤Î¥×¥í¥°¥é¥à Ï»¤ÄÌܤβô¤Ï¡¤ST¤«¤é~L¤Þ¤Ç°ÜÆ°¤·¡¤L¤Î¥Ü¡¼¥ë¤òÄϤà¤Þ¤Ç¤Î¥×¥í¥°¥é¥à ¼·¤ÄÌܤβô¤Ï¡¤L¤«¤éGT¤Þ¤Ç°ÜÆ°¤·¤Æ¥´¡¼¥ë¤·¡¤~¥È¥ì¡¼¤«¤é¾¯¤·Î¥¤ì¤Þ¤Ç¤Î¥×¥í¥°¥é¥à ¤Ç¤¢¤ë¡¥
#define CONN 1 #define SIGNALON1 11 #define SIGNALOFF1 12 #define SIGNALON2 13 #define SIGNALOFF2 14 #define turn_right OnFwd(OUT_C,25);OnRev(OUT_B,23); #define turn_left OnFwd(OUT_B,28);OnRev(OUT_C,20); #define rotate_right OnFwd(OUT_C,25);OnRev(OUT_B,22); #define rotate_left OnFwd(OUT_B,28);OnRev(OUT_C,15); #define go_straight OnFwd(OUT_B,23);OnFwd(OUT_C,20); #define go_straight2 OnFwd(OUT_B,20);OnFwd(OUT_C,17); #define turn OnRev(OUT_C,20);OnFwd(OUT_B,28);Wait(3200);Off(OUT_BC); #define turn2 OnRev(OUT_B,28);OnFwd(OUT_C,20);Wait(1500);Off(OUT_BC); #define sakittyo OnFwd(OUT_C,20);OnFwd(OUT_B,23);Wait(1150);Off(OUT_BC); #define turn3 OnRev(OUT_B,30);Wait(4800);Off(OUT_BC); #define turn4 OnRev(OUT_B,30);Wait(5200);Off(OUT_BC); #define back OnRev(OUT_C,20);OnRev(OUT_B,28);Wait(3000);Off(OUT_BC); #define osidasi OnFwd(OUT_BC,100);Wait(100);Off(OUT_BC); #define arm_down OnFwd(OUT_A,25);Wait(1500);Off(OUT_A); #define arm_up OnRev(OUT_A,35);Wait(1500);Off(OUT_A); #define black 30 #define white 60 #define lightgray 50 #define darkgray 39 #define center 45 sub followline_L(int stop_time) { long t0=CurrentTick(); while(CurrentTick()-t0<stop_time){ if(SENSOR_1<black){ rotate_left; }else if(SENSOR_1<darkgray){ turn_left; }else if(SENSOR_1>lightgray){ turn_right; t0=CurrentTick(); }else if(SENSOR_1<center){ go_straight; t0=CurrentTick(); }else{ rotate_right; t0=CurrentTick(); } } Off(OUT_BC); Wait(1000); } sub followline_R(int stop_time) { long t0=CurrentTick(); while(CurrentTick()-t0<stop_time){ if(SENSOR_1<black){ rotate_right; }else if(SENSOR_1<darkgray){ turn_right; }else if(SENSOR_1>lightgray){ turn_left; t0=CurrentTick(); }else if(SENSOR_1<center){ go_straight; t0=CurrentTick(); }else{ rotate_left; t0=CurrentTick(); } } Off(OUT_BC); Wait(1000); } sub followline_R2(int stop_time) { long t0=CurrentTick(); while(CurrentTick()-t0<stop_time){ if(SENSOR_1<black){ rotate_right; t0=CurrentTick(); }else if(SENSOR_1<darkgray){ turn_right; t0=CurrentTick(); }else if(SENSOR_1>lightgray){ turn_left; }else if(SENSOR_1<center){ go_straight2; t0=CurrentTick(); }else{ rotate_left; } } Off(OUT_BC); Wait(2000); } sub Blackto_White() { while(SENSOR_1<lightgray){ OnFwd(OUT_C,25); OnFwd(OUT_B,25); } Off(OUT_BC); } sub Whiteto_Black() { while(SENSOR_1>darkgray){ OnFwd(OUT_C,25); OnFwd(OUT_B,25); } Off(OUT_BC); } sub Blackto_White_R() { while(SENSOR_1<darkgray){ OnFwd(OUT_C,25); OnRev(OUT_B,25); } Off(OUT_BC); } sub Blackto_White_L() { while(SENSOR_1<lightgray){ OnFwd(OUT_B,25); OnRev(OUT_C,25); } Off(OUT_BC); } task main() { SetSensorLight(S1); RemoteStartProgram(CONN,"kodomo.nxc"); followline_R(200); Blackto_White(); followline_L(150); Blackto_White_R(); followline_R2(150); SendRemoteNumber(CONN,MAILBOX1,SIGNALON1); Wait(1000); arm_up; turn; SendRemoteNumber(CONN,MAILBOX1,SIGNALON2); Wait(1000); followline_R(150); Blackto_White_L(); followline_L(100); Blackto_White(); Whiteto_Black(); Blackto_White(); Whiteto_Black(); Blackto_White(); Whiteto_Black(); Blackto_White(); followline_R(150); Blackto_White(); turn2; sakittyo; arm_down; SendRemoteNumber(CONN,MAILBOX1,SIGNALON1); Wait(1000); arm_up; turn3; Whiteto_Black(); Blackto_White(); Whiteto_Black(); Blackto_White(); followline_R(200); Blackto_White(); turn2; SendRemoteNumber(CONN,MAILBOX1,SIGNALON2); Wait(1000); turn3; Whiteto_Black(); Blackto_White(); Whiteto_Black(); Blackto_White(); followline_R(200); Blackto_White(); turn2; sakittyo; arm_down; SendRemoteNumber(CONN,MAILBOX1,SIGNALON1); Wait(1000); arm_up; turn3; Whiteto_Black(); Blackto_White(); Whiteto_Black(); Blackto_White(); Blackto_White_R(); followline_R(200); Blackto_White(); turn2; SendRemoteNumber(CONN,MAILBOX1,SIGNALON2); Wait(1500); turn4; arm_down Whiteto_Black(); Blackto_White(); Whiteto_Black(); Blackto_White(); followline_L(200); Blackto_White(); followline_R(200); Blackto_White(); followline_L(200); Blackto_White(); followline_R(200); Blackto_White(); followline_L(150); Blackto_White_R(); followline_R2(125); SendRemoteNumber(CONN,MAILBOX1,SIGNALON1); Wait(1000); arm_up; turn; followline_R(100); Blackto_White_L(); followline_L(100); Blackto_White(); Whiteto_Black(); Blackto_White(); Whiteto_Black(); Blackto_White(); Whiteto_Black(); Blackto_White(); followline_R(200); Blackto_White(); turn2; sakittyo; SendRemoteNumber(CONN,MAILBOX1,SIGNALON2); Wait(1000); }
#define SIGNALON1 11 #define SIGNALOFF1 12 #define SIGNALON2 13 #define SIGNALOFF2 14 #define CONN 1 task main() { int msg; while(true){ ReceiveRemoteNumber(MAILBOX1,true,msg); if(msg==SIGNALON1){ OnRev(OUT_A,20);Wait(1000); }else if(msg==SIGNALOFF1){ Off(OUT_A); }else if(msg==SIGNALON2){ OnFwd(OUT_A,20);Wait(1000); }else if(msg==SIGNALOFF2){ Off(OUT_A); } } }
º£²ó¤Î²ÝÂê¤Ç¤Ï¥×¥í¥°¥é¥ß¥ó¥°¤â¥í¥Ü¥Ã¥È¤ÎºîÀ®¤â¿¤¯¤Î»þ´Ö¤òÈñ¤ä¤·¤¿¡£
¥í¥Ü¥Ã¥È¤ÎºîÀ®¤Ç¤Ï¡¢¥í¥Ü¥Ã¥È¤Î·Á¡¢¥Ü¡¼¥ë¤ò±¿¤ÖÊýË¡¤Ê¤ÉÍÍ¡¹¤Ê»ö¤ò¹Í¤¨
ºîÀ®¤·¤¿¡£¥×¥í¥°¥é¥à¤Ç¤Ï¥é¥¤¥ó¥È¥ì¡¼¥¹¤Ï²ÝÂꣲ¤Ç»ÈÍѤ·¤¿¥â¥Î¤ò¤Þ¤ó¤Þ
»È¤Ã¤Æ¡¢ÏÀÍý¾å¤Ç¤Ï¤¤Á¤ó¤È¥³¡¼¥¹¾å¤ò´°àú¤ËÆ°¤¯¤â¤Î¤¬ºî¤ì¤¿¤¬¡¢¸½¼ÂÌäÂê
¤È¤·¤Æ¡¢ÅÅÃÓ¤¬Àڤ줿¤Î¤¬¸¶°ø¤À¤È»×¤¦¤¬¡¢½ÐÎϤ¬¤¹¤°¤Ë¼å¤¯¤Ê¤Ã¤¿¤ê¡¢
ÊÒÊý¤Î¥â¡¼¥¿¡¼¤¬ÉÔÄ´¤ÇƱ¤¸½ÐÎϤÇľ¿Ê¤µ¤»¤Æ¤â¶Ê¤¬¤Ã¤Æ¤·¤Þ¤¦¤È¤¤¤¦
¤è¤¦¤Ê¤³¤È¤¬¤¢¤ê¡¢½ÐÎϤäÉÿô¤òËè²óËè²óÄ´À°¤·¤¿¤ê¤¹¤ë¤Î¤Ë¤«¤Ê¤ê
»þ´Ö¤¬¤«¤«¤Ã¤¿¡£¤À¤¬¡¢ºÇ½ªÅª¤Ë¥í¥Ü¥³¥ó¤Ç¥Ü¡¼¥ë¤ò°ì¤Ä¤·¤«¥È¥ì¡¼¤Ë
Æþ¤ì¤é¤ì¤Ê¤«¤Ã¤¿¤¬Æó°Ì¤È¤¤¤¦·ë²Ì¤À¤Ã¤¿¤Î¤Ç¡¢¼«Ê¬¤È¤·¤Æ¤Ï°¤¯¤Ï¤Ê¤¤·ë²Ì
½Ð²ñ¤Ã¤¿¤È»×¤¦¡£