¾å¤Î¿Þ¤Ë¤¢¤ë¥³¡¼¥¹¤ò
¡¡¡A¥¹¥¿¡¼¥È
¡¡¢Eľ¿Ê
¡¡£F(SOUND_UP)
¡¡¤Q°ì»þÄä»ß(SOUND_DOWN)¡õº¸ÀÞ
¡¡¥Rľ¿Ê(SOUND_UP)
¡¡¦Sº¸ÀÞ(SOUND_UP)
¡¡§G(SOUND_UP)
¡¡¨H(SOUND_UP)
¡¡©T°ì»þÄä»ß(SOUND_DOWN)¡õľ¿Ê
¡¡ªT°ì»þÄä»ß(SOUND_DOWN)¡õľ¿Ê
¡¡«R°ì»þÄä»ß(SOUND_DOWN)¡õº¸ÀÞ
¡¡¬Sľ¿Ê(SOUND_UP)
¡¡Pº¸ÀÞ(SOUND_UP)
¡¡®E°ì»þÄä»ß(SOUND_DOWN)¡õº¸ÀÞ
¡¡¯AÄä»ß(SOUND_DOWN)
¤È¤¤¤Ã¤¿Æ»½ç¤Ç¿Ê¤à¤è¤¦¤Ê¥í¥Ü¥Ã¥È¤òºî¤ë¤³¤È¡£
¤¿¤À¤·¡¢°Ê²¼¤Î¾ò·ï¤òËþ¤¿¤µ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
¡¡¡¦¤Ê¤ë¤Ù¤¯Â®¤¯Àµ³Î¤ËÆ°¤¯¥í¥Ü¥Ã¥È¤Ë¤Ê¤ë¤è¤¦¤Ë¹©Éפ¹¤ë¤³¤È¡£
¡¡¡¦°ì»þÄä»ß¤Î¸òº¹ÅÀ¤ª¤è¤ÓÃú»úÏ©¤Ç¤ÏSOUND_DOWN¤òÌĤ餷¤¿¸å¡¢1ÉôÖÄä»ß¤¹¤ë¤³¤È¡£
¡¡¡¦Ä¾³Ñ¥³¡¼¥Ê¡¼¤ª¤è¤Ó°ì»þÄä»ß¤¬ÉÔÍפÏÃú»úÏ©¤Ç¤ÏSOUND_UP¤òÌĤ餷¡¢Ää»ß¤·¤Ê¤¤¤Ç¿Ê¤à¤³¤È¡£
¡¡¡¦¥í¥Ü¥Ã¥È¤Ï¥µ¥¤¥º¤Ï¡¢15cm»ÍÊý°ÊÆâ¤È¤¹¤ë¡Ê¹â¤µ¤Ï̵À©¸Â¡Ë¡£
¡¡¡¦¸òº¹ÅÀ¡¢Ãú»úÏ©¡¢Ä¾³Ñ¥³¡¼¥Ê¡¼¤Ë¤Ä¤¤¤Æ¤Ï¡¢º¹¤·³Ý¤«¤Ã¤¿»þÅÀ¤ÇȽÊ̤¹¤ë¤â¤Î¤È¤·¡¢Í½¤áÀßÄꤷ¤¿Áö¹Ô»þ´Ö¤Î¤ß¤ÇȽÄꤷ¤¿¤ê¡¢Áö¹Ôµ÷Î¥¤Î¤ß¤ÇȽÄꤷ¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
¥í¥Ü¥Ã¥ÈËÜÂΤÏ15Ñ»ÍÊýÆâ¤Ë¼ý¤á¤ë¤È¤¤¤¦À©¸Â¤¬¤¢¤Ã¤¿¤Î¤Ç¡¢¤Ê¤ë¤Ù¤¯¥³¥ó¥Ñ¥¯¥È¤Ë¤Ê¤ë¤è¤¦¤Ë¤·¤¿¡£
½é¤á¤ÏÁ°ÆóÎØ¡¢¸å¤í°ìÎؤλ°Îؤˤ·¤Æ¤¤¤¿¤¬¡¢¸å¤í¤Ë¥¿¥¤¥ä¤ò¤Ä¤±¤ë¤È¾®²ó¤ê¤¬Íø¤«¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¤Î¤Ç¡¢¸å¤í¤Ï»Ù¤¨¤ë¤À¤±¤Ë¤·¤¿¡£
¤Þ¤¿¡¢¾®²ó¤ê¤¬Íø¤¯¤è¤¦¤Ëξ¦¤Î¼ÖÎؤò¶á¤¯¤Ê¤ëÍͤˤ·¤Æ¤ß¤¿¡£
¥»¥ó¥µ¡¼¤Î°ÌÃÖ¤ÇÆ°¤¤¬ÊѤï¤Ã¤¿¤ê¤¹¤ë¤Î¤Ç¡¢ËÜÂΤ«¤é±ó¤¹¤®¤º¶á¤¹¤®¤º¡¢¤Þ¤¿¡¢»æ¤Ë¤Ê¤ë¤Ù¤¯¶á¤¯¤Ê¤ë¤è¤¦¤Ë¤·¤¿¡£
Á°²ó¤Ï¡¢¥Þ¥¯¥í¤Ê¤É¤òÄêµÁ¤·¤Ê¤«¤Ã¤¿¤»¤¤¤Ç¥×¥í¥°¥é¥à¤¬Ä¹¤¯¤Ê¤ê¥¢¥É¥Ð¥¤¥¹¤ò¼õ¤±¤¿¤Î¤Ç¡¢º£²ó¤Ï¤Ê¤ë¤Ù¤¯¤Þ¤È¤á¤é¤ì¤ë¤È¤³¤í¤Ï¤Þ¤È¤á¤Æ¡¢¥³¥ó¥Ñ¥¯¥È¤Ë¤Ê¤ë¤è¤¦¤Ë¤·¤¿¡£
¤¢¤é¤«¤¸¤áÌÀ¤ë¤µ¤Î´ð½àÃͤò·è¤á¤Æ¤ª¤¤¤Æ¡¢¤½¤ÎÃͤ«¤é¤¤¤¯¤ÄÎ¥¤ì¤¿¤é¤³¤¦¤¹¤ë¡¢¤È¤¤¤Ã¤¿¤è¤¦¤Ê´¶¤¸¤Ë¤·¤¿¡£
¤Þ¤¿¡¢¶Ê¤¬¤ë¾ì½ê¤Ë¤è¤Ã¤Æ³ÑÅÙ¤¬ÊѤï¤ë¤Î¤Ç¡¢¶Ê¤¬¤ëÊý¸þ¤¬Æ±¤¸¤Ç¤â¾ì½ê¤Ë±þ¤¸¤Æ2¤Ä¤Ëʬ¤±¤Æ¤ß¤¿¤ê¡¢¸òº¹ÅÀ¤Îľ¿Ê¤«º¸ÀÞ¤«¤ÎȽÃǤò¤¹¤ë¤¿¤á¤Ë»þ´Ö¤ò·×¤Ã¤¿¤ê¤·¤¿¡£
#define THRESHOLD 45 #define go_forward OnFwd(OUT_AC); //ľ¿Ê #define turn_right0 OnFwd(OUT_A);OnRev(OUT_C); //±¦Àû²ó #define turn_right1 OnFwd(OUT_A); //±¦ÀÞ #define turn_left0 OnRev(OUT_A);OnFwd(OUT_C); //º¸Àû²ó #define turn_left1 OnFwd(OUT_C); //º¸ÀÞ #define s_up PlaySound(SOUND_UP); #define s_down PlaySound(SOUND_DOWN); #define Tmax 29 //¥é¥¤¥ó¾å¤òÁö¤ë»þ´Ö¤Î¾å¸Â int t=0; //¥é¥¤¥ó¾å¤ËTmax°Ê¾å¤¤¤¿²ó¿ô
°ì»þÄä»ß¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤È¤³¤í¤Ç¤ÎÆ°ºî¡£
sub cross_stop(){ Off(OUT_AC);Wait(100); s_down; }
ľ³Ñ¤Ëº¸ÀÞ¤¹¤ë¤È¤³¤í¤Ç¤ÎÆ°ºî¡£
sub cross_left(){ s_up; turn_left0; until(SENSOR_2 < THRESHOLD -3); }¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¥¬¤Ë¤ª¤¤¤Æ¡¢¸òº¹ÅÀ¤òľ¿Ê¤¹¤ë¤¿¤á¤Î¤â¤Î¡£
sub cross_straight(){ turn_right1; Wait(20); go_forward; until(SENSOR_2 < THRESHOLD -3); turn_right1; until(SENSOR_2 < THRESHOLD +8); }
Tmax¤òĶ¤¨¤ë¤Þ¤Ç¥é¥¤¥ó¤Îº¸Â¦¤ò¤Ê¤¾¤ë¡£
sub linetrace0(){ SetSensor(SENSOR_2,SENSOR_LIGHT); ClearTimer(0); while(FastTimer(0)<Tmax){ if(SENSOR_2 < THRESHOLD -8){ turn_left0; //Ç»¤¤¹õ¤Î¤È¤¤Ïº¸Àû²ó }else if(SENSOR_2 < THRESHOLD -3){ turn_left1; //Çö¤¤¹õ¤Î¤È¤¤Ïº¸ÀÞ }else if(SENSOR_2 < THRESHOLD +3){ go_forward; //¹õ¤ÈÇò¤ÎÃæ´Ö¤Î¤È¤¤Ïľ¿Ê }else if(SENSOR_2 < THRESHOLD +8){ turn_right1; //Çö¤¤Çò¤Î¤È¤¤Ï±¦ÀÞ }else { turn_right0; //Ç»¤¤Çò¤Î¤È¤¤Ï±¦Àû²ó } if(SENSOR_2 < THRESHOLD -8){ ClearTimer(0); } //Ç»¤¤¹õ¤Î¾å¤Ë¤¤¤ë»þ´Ö¤ò·×¤ë } t+=1; //Tmax¤ò¤³¤¨¤¿¤ét¤ò1Áý¤ä¤¹ }
sÉô֡¢»þ´Ö¤ò·×¤é¤º¤Ë¥é¥¤¥ó¤Îº¸Â¦¤ò¤¿¤É¤ë
void linetrace1(int s){ SetSensor(SENSOR_2,SENSOR_LIGHT); ClearTimer(2); while(FastTimer(2)<s){ if(SENSOR_2 < THRESHOLD -8){ turn_left0; }else if(SENSOR_2 < THRESHOLD -3){ turn_left1; }else if(SENSOR_2 < THRESHOLD +3){ go_forward; }else if(SENSOR_2 < THRESHOLD +8){ turn_right1; }else { turn_right0; } ClearTimer(0); } }
ºÙ¤«¤¤¤È¤³¤í¤ò¤¤ì¤¤¤Ë¤¿¤É¤ì¤ë¤è¤¦¤Ë¡¢¤½¤³¤À¤±¤ÏÆÃÊÌ¤Ë¥×¥í¥°¥é¥à¤òÁȤó¤À¡£
sub linetrace_2(){ SetSensor(SENSOR_2,SENSOR_LIGHT); while(FastTimer(0)<26){ if(SENSOR_2 < THRESHOLD -8){ turn_left0; }else if(SENSOR_2 < THRESHOLD -3){ turn_left1; }else if(SENSOR_2 < THRESHOLD +3){ go_forward; }else if(SENSOR_2 < THRESHOLD +8){ turn_right1; }else { turn_right0; } if(SENSOR_2 < THRESHOLD -8){ ClearTimer(0); } } t+=1; }
¡Öt==0¡×¤Î¤È¤¡¢ºÇ½é¤Î¡Öif¡×¤ÎÃæ¤ËÆþ¤ë¡£¸òº¹ÅÀ¤ò¸«¤Ä¤±¤ë¤È¡Ölinetrace0¡×¤¬½ª¤ï¤ë¡£
¤³¤Î¤È¤¡Öt==1¡×¤Ë¤Ê¤ë¤¬¡¢¡Öif¡×¤ÎÆ°ºî¤¬½ª¤ï¤ë¤Þ¤Ç¡Öif¡×¤Î¤Þ¤Þ¡£
¤½¤·¤Æ¡Öcross_left¡×¤Ë°Ü¤ë¡£ ¡Öcross_left¡×¤¬½ª¤ï¤ë¤È¡Öt==0¡×¤Î¡Öif¡×¤«¤é½Ð¤Æ¡¢¡Öt==1¡×¤Î¡Öif¡×¤ËÆþ¤ë¡£
(²¿Åٻ¤Æ¤â¡Ötask main¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¡×¤È¤Ê¤Ã¤Æ¤·¤Þ¤¤¡¢Æ°¤«¤¹¤³¤È¤¬¤Ç¤¤Ê¤«¤Ã¤¿)
task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); ClearTimer(0); while(<=13){ if(t==0){ linetrace1(6000); //¡¢ linetrace0(); cross_left(); //£ }else if((t==1)||(t==8)||(t==11)){ linetrace0(); cross_stop(); turn_left0;until(SENSOR_2 < THRESHOLD +3); //¤«® }else if((t==2)||(t==9)){ linetrace1(500); linetrace2(); s_up; cross_straight(); //¥¬ }else if((t==3)||(t==10)){ linetrace1(500); linetrace0(); cross_left(); //¦ }else if(t==4){ linetrace0(); cross_left(); //§ }else if(t==5){ linetrace1(4000); linetrace0(); cross_left(); ClearTimer(0); //¨ }else if(t==6){ linetrace0(); cross_stop(); cross_straight(); //© }else if(t==7){ linetrace1(2000); linetrace0(); cross_stop(); cross_straight(); //ª }else if(t==12){ linetrace0(); s_down; Off(OUT_AC); //¯ } } }
¤¿¤Àñ¤Ë¥é¥¤¥ó¤È¥ì¡¼¥¹¤ò¤¹¤ë¥×¥í¥°¥é¥à¤Ï´Êñ¤Ëºî¤ë¤³¤È¤¬¤Ç¤¤¿¡£
¤·¤«¤·¡¢¸òº¹ÅÀ¤ÎȽÃÇ¤Ê¤É¤Î¥×¥í¥°¥é¥à¤Ë´Ø¤·¤Æ¤Ï¡¢¼«Ê¬°ì¿Í¤Ç¤ä¤Ã¤Æ¤ß¤Æ¤â¤¦¤Þ¤¯Æ°¤«¤Ê¤¤¤È¤³¤í¤¬¤¢¤Ã¤¿¤Î¤Ç¡¢¤Ç¤¤Æ¤¤¤ë¿Í¤Î¤â¤Î¤ò»²¹Í¤Ë¤·¤¿¤ê¡¢¶µ¤¨¤Æ¤â¤é¤Ã¤¿¤ê¤·¤Æ²¿¤È¤«´°À®¤·¤¿¤È»×¤Ã¤¿¤¬¡¢¤Ê¤¼¤«task main¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¤Èɽ¼¨¤µ¤ì¤Æ¤Ç¤¤Ê¤«¤Ã¤¿¡£
¤Þ¤¿¡¢²ÝÂê¤ÎÆâÍƤÏÁ°²ó¤è¤êñ½ã¤Ê¤â¤Î¤À¤Ã¤¿¤¬¡¢¥×¥í¥°¥é¥à¤òÁȤà¤È¤Ê¤ë¤È¤½¤¦¤â¤¤¤«¤º¤È¤Æ¤â¶ìÏ«¤·¤¿¡£Ãæ¤Ç¤â¡¢¸òº¹ÅÀ¤ò¶Ê¤¬¤ë¤«¶Ê¤¬¤é¤Ê¤¤¤«¤Î¶èÊ̤ò¤µ¤»¤ë¤Î¤¬°ìÈÖÆñ¤·¤«¤Ã¤¿¡£