[[2016b/Member]] #define THRESHOLD 45 //Çò¤È¹õ¤ÎÃæ´Ö¤ÎÈ¿¼ÍΨ #define SPEED_Fast 60 // ®¤¤¥¹¥Ô¡¼¥É #define SPEED_Slow 50 // ÃÙ¤¤¥¹¥Ô¡¼¥É #define OnLR(speedR,speedL) OnRev(OUT_A,speedR);OnRev(OUT_B,speedL); //AB¤ÎÆ°ºîƱ»þ»ØÄê /* task pitagora() //¥Ü¡¼¥ë¤ò¼è¤Ã¤¿¤È¤¤Î¥á¥É¥ì¡¼ { //while(true) //{ PlayTone(1175,130); Wait(150); PlayTone(1318,130); Wait(300); PlayTone(1175,140); Wait(160); PlayTone(1318,130); Wait(300); PlayTone(1568,140); Wait(160); PlayTone(1480,130); Wait(300); PlayTone(1175,130); Wait(160); PlayTone(1318,130); Wait(300); PlayTone(988,130); Wait(150); PlayTone(880,140); Wait(310); PlayTone(988,130); Wait(150); PlayTone(1046,140); Wait(310); PlayTone(1109,130); Wait(150); PlayTone(1175,140); Wait(460); PlayTone(1175,130); Wait(310); PlayTone(1175,130); Wait(150); PlayTone(1318,130); Wait(310); PlayTone(1175,130); Wait(150); PlayTone(1318,130); Wait(310); PlayTone(1568,130); Wait(150); PlayTone(1480,130); Wait(310); PlayTone(1175,130); Wait(150); PlayTone(1318,130); Wait(310); PlayTone(1175,130); Wait(150); PlayTone(1318,130); Wait(300); PlayTone(1175,140); Wait(160); PlayTone(1318,130); Wait(300); PlayTone(2093,140); Wait(160); PlayTone(1975,130); Wait(300); PlayTone(1568,140); Wait(160); PlayTone(1760,130); Wait(300); PlayTone(1175,130); Wait(150); PlayTone(1318,140); Wait(310); PlayTone(1175,130); Wait(150); PlayTone(1318,140); Wait(310); PlayTone(1568,130); Wait(150); PlayTone(1480,140); Wait(310); PlayTone(1175,130); Wait(150); PlayTone(1318,130); Wait(310); PlayTone(988,130); Wait(150); PlayTone(880,440); Wait(460); PlayTone(1318,130); Wait(310); PlayTone(1318,130); Wait(150); PlayTone(1175,440); Wait(770); PlayTone(1175,130); Wait(150); PlayTone(1318,130); Wait(300); PlayTone(1175,140); Wait(160); PlayTone(1318,130); Wait(300); PlayTone(1568,140); Wait(160); PlayTone(1480,130); Wait(300); PlayTone(1175,140); Wait(160); PlayTone(1318,130); Wait(300); PlayTone(1175,130); Wait(160); PlayTone(1318,130); Wait(300); PlayTone(1175,130); Wait(150); PlayTone(1318,140); Wait(310); PlayTone(2093,130); Wait(150); PlayTone(1975,140); Wait(310); PlayTone(1568,130); Wait(150); PlayTone(1760,140); Wait(310); PlayTone(1175,130); Wait(150); PlayTone(1318,130); Wait(310); PlayTone(1175,130); Wait(150); PlayTone(1318,130); Wait(310); PlayTone(1568,130); Wait(150); PlayTone(1480,130); Wait(310); PlayTone(1175,130); Wait(150); PlayTone(1318,130); Wait(310); PlayTone(1046,130); Wait(150); PlayTone(1175,130); Wait(300); PlayTone(1046,140); Wait(160); PlayTone(1175,130); Wait(300); PlayTone(1397,140); Wait(160); PlayTone(1318,130); Wait(300); PlayTone(1046,140); Wait(160); PlayTone(1175,130); Wait(300); PlayTone(932,130); Wait(160); PlayTone(1046,130); Wait(300); PlayTone(932,130); Wait(150); PlayTone(1046,140); Wait(310); PlayTone(1244,130); Wait(150); PlayTone(1175,140); Wait(310); PlayTone(1046,130); Wait(150); PlayTone(988,140); Wait(310); PlayTone(880,130); Wait(150); PlayTone(784,1050); Wait(1380); PlayTone(1397,440); Wait(460); PlayTone(1318,130); Wait(300); PlayTone(1318,140); Wait(160); PlayTone(1480,130); Wait(150); PlayTone(1318,130); Wait(150); PlayTone(1480,140); Wait(160); PlayTone(1568,440); Wait(460); PlayTone(1175,130); Wait(300); PlayTone(988,130); Wait(160); PlayTone(1046,130); Wait(300); PlayTone(1046,130); Wait(150); PlayTone(1175,140); Wait(160); PlayTone(1109,130); Wait(150); PlayTone(1175,130); Wait(150); PlayTone(988,440); Wait(770); PlayTone(1397,130); Wait(150); PlayTone(1318,130); Wait(310); PlayTone(1318,130); Wait(150); PlayTone(1480,130); Wait(150); PlayTone(1318,140); Wait(160); PlayTone(1480,130); Wait(150); PlayTone(1568,440); Wait(460); PlayTone(1175,130); Wait(310); PlayTone(988,130); Wait(150); PlayTone(1046,130); Wait(310); PlayTone(1046,130); Wait(150); PlayTone(1175,130); Wait(150); PlayTone(1109,130); Wait(150); PlayTone(1175,140); Wait(160); PlayTone(988,440); Wait(760); PlayTone(1175,140); Wait(160); PlayTone(1318,130); Wait(300); PlayTone(1175,130); Wait(150); PlayTone(1318,140); Wait(310); PlayTone(1568,130); Wait(150); PlayTone(1480,140); Wait(310); PlayTone(1175,130); Wait(150); PlayTone(1318,140); Wait(310); PlayTone(1175,130); Wait(150); PlayTone(1318,130); Wait(310); PlayTone(1175,130); Wait(150); PlayTone(1318,130); Wait(310); PlayTone(1568,130); Wait(150); PlayTone(1480,130); Wait(310); PlayTone(1175,130); Wait(150); PlayTone(1318,130); Wait(310); PlayTone(1175,130); Wait(150); PlayTone(1318,130); Wait(310); PlayTone(1175,130); Wait(150); PlayTone(1318,130); Wait(300); PlayTone(1568,140); Wait(160); PlayTone(1480,130); Wait(300); PlayTone(1175,140); Wait(160); PlayTone(1318,130); Wait(300); PlayTone(1175,140); Wait(160); PlayTone(1318,130); Wait(300); PlayTone(1175,130); Wait(160); PlayTone(1318,130); Wait(300); PlayTone(2093,130); Wait(150); PlayTone(1975,140); Wait(460); PlayTone(1568,140); Wait(1230); // } //} //task pitagora_owari() //{ PlayTone(1175,130); Wait(150); PlayTone(1318,130); Wait(310); PlayTone(1175,130); Wait(150); PlayTone(1318,130); Wait(310); PlayTone(2093,130); Wait(150); PlayTone(1975,130); Wait(460); PlayTone(1568,280); Wait(300); //} } */ sub line_trace(int sensor_light_lv) //¥é¥¤¥ó¥È¥ì¡¼¥¹¤Î¥×¥í¥»¥¹ { if (sensor_light_lv < THRESHOLD-8) { OnRev(OUT_B,SPEED_Fast); OnRev(OUT_A,-SPEED_Fast); } else if (sensor_light_lv < THRESHOLD-5) { OnRev(OUT_B,SPEED_Slow); } else if (sensor_light_lv < THRESHOLD +5) { OnRev(OUT_AB,50); } else if (sensor_light_lv < THRESHOLD+8) { OnRev(OUT_A,SPEED_Slow); } else { OnRev(OUT_A,SPEED_Fast); OnRev(OUT_B,-SPEED_Fast); } } sub go_forward_intersection() //¸òº¹ÅÀ¤òÄ̲᤹¤ë¢¤ÎÁàºî { OnRev(OUT_AB,SPEED_Slow); Wait(410); Off(OUT_AB); } sub turn_r_intersection() //¸òº¹ÅÀ¤Î±¦¤Ë¼ÖÂΤò¸þ¤«¤»¤ë { OnLR(60,-60); Wait(450); } sub turn_l_intersection() // ¸òº¹ÅÀ¤Îº¸¤Ë¼ÖÂΤò¸þ¤«¤»¤ë { OnLR(-60,60); Wait(450); } //¥Ü¡¼¥ë¤ò¼è¤ëÆ°ºî sub arm_lock() { Off(OUT_ABC); OnRev(OUT_AB,25); OnFwd(OUT_C,-12); Wait(3200); Off(OUT_ABC); } sub arm_unlock() //¥¢¡¼¥à¤ò¾å¤²¡¢¥Ü¡¼¥ë¤ò¼«Í³¤Ë¤¹¤ë { OnFwd(OUT_C,30); } long intersection_judgment(long t0) //Sensor¤ÎÃͤ¬34(Ǥ°Õ¤ÎÈ¿¼ÍΨ)°Ê¾å¤Î¤È¤¡¢°ú¿ô¤Ë¸½ºß¤Î»þ¹ï¤òÂåÆþ¤·ÊÖ¤¹¡£¤½¤ì°Ê³°¤ÏÊѹ¹¤»¤º°ú¿ô¤òÊÖ¤¹¡£ { if (SENSOR_1 > 34) { t0 = CurrentTick(); } return t0 ; } task main() { SetSensorLight(S1); // ¥é¥¤¥È¥»¥ó¥µ¡¼¤ÎÄêµÁ SetSensorLowspeed(S2); //Ķ²»ÇÈ¥»¥ó¥µ¡¼¤ÎÄêµÁ int intersection_count = 0; //¸òº¹ÅÀ¤Î¥«¥¦¥ó¥ÈÊÑ¿ô¤ÎÄêµÁ int count_look=0; //¥Ü¡¼¥ë¤òÄϤó¤Ç¤¤¤ë¤«¤ÎÊÑ¿ô¤ÎÄêµÁ long t0 = CurrentTick(); //»þ´Ö¤òµ²±¤¹¤ëÊÑ¿ô¤ÎÄêµÁ RotateMotor(OUT_AB,SPEED_Slow,-1000); //¥¹¥¿¡¼¥ÈÃÏÅÀ¤«¤éÁ°¿Ê¤¹¤ë while(CurrentTick()-t0 < 6000) //Á°¿Ê¤«¤é6ÉäۤɡÊ̵¾ò·ï¡Ë¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¤¹¤ë¤³¤È¤Ç¡¢³Î¼Â¤ËÀþ¾å¤Ë¾è¤ë { line_trace(SENSOR_1); //¥é¥¤¥ó¥È¥ì¡¼¥¹¤ò¸Æ¤Ó½Ð¤¹ } t0 = CurrentTick(); // ¸òº¹ÅÀ¤ÎȽÄê¤ò»Ï¤á¤ë¤¿¤á¤Ë¥¿¥¤¥Þ¡¼¤ò¥ê¥»¥Ã¥È while(true) { //NumOut(0,0,SensorUS(S2) , true); while(CurrentTick()-t0 < 410) //»ØÄꤷ¤¿È¿¼ÍΨ¡Êintersection_judgment¤Ë¤è¤ë½èÍý¡Ë¤¬¡¢410(Ǥ°Õ¤Î»þ´Ö)Ϣ³¤Ç¤Ê¤±¤ì¤Ð¡¢·«¤êÊÖ¤¹ { line_trace(SENSOR_1); t0=intersection_judgment(t0); } PlaySound(SOUND_UP); //¥ë¡¼¥×¤òÈ´¤±¤¿¡Ê¸òº¹ÅÀ¤Î½èÍý¤¬»Ï¤Þ¤ë¡Ë¤È¤¡¢²»¤òÌĤ餹 Off(OUT_AB); //¼ÖÂΤÎÄä»ß Wait(1000); intersection_count +=1; //¸òº¹ÅÀ¤ò¥«¥¦¥ó¥È¤¹¤ë if (intersection_count <=5 ) //¸òº¹ÅÀ¤¬5²ó°ÊÆâ¤Î¤È¤¤Î½èÍý { turn_r_intersection(); //¢¤Î½èÍý go_forward_intersection(); //£¤Î½èÍý t0 = CurrentTick(); //¥¿¥¤¥Þ¡¼¤ò¥ê¥»¥Ã¥È while(CurrentTick()-t0 < 1000) //¤¤Î½èÍý¡Ê1Éô֥饤¥ó¥È¥ì¡¼¥¹¤ò¤¹¤ë¡Ë { line_trace(SENSOR_1); } if (intersection_count ==2) //2²ó¤á¤Î¸òº¹ÅÀ¤Î¤È¤ { RotateMotor(OUT_AB,SPEED_Slow,500); //¸å¤í¤Ë¡ÊÀµ³Î¤Ë¡Ë²¼¤¬¤ë while(SensorUS(S2)<=20) //Ķ²»ÇÈ¥»¥ó¥µ¡¼¤¬20cm°ÊÆâ¤Î¤È¤¥ë¡¼¥× { OnRevSync(OUT_AB,40,0); //Àµ³Î¤ËÁ°¿Ê } arm_lock(); //¥Ü¡¼¥ë¤Î¼èÆÀ //start pitagora ; //¥á¥í¥Ç¥£¤òή¤¹ } } else if (intersection_count ==6 ) //¾å¤Î¥×¥í¥°¥é¥à¤Îgo_forward_intersection¤Ë¾ò·ï¼°¡Öif (intersection_count !=6 )¡×¤ò¤Ä¤±¤ì¤Ð¡¢¥³¥ó¥Ñ¥¯¥È¤Ë¤Ï¤Ê¤ë¤¬¡¢¥·¥å¡¼¥È¤Î½èÍý¤ÏÄ´À᤬ɬÍפʤΤÇʬΥ { turn_l_intersection(); t0 = CurrentTick(); while(CurrentTick()-t0 < 1500) //¥é¥¤¥ó¥È¥ì¡¼¥¹¤Ç¥é¥¤¥ó¤Ë³Î¼Â¤Ë¾è¤ë { line_trace(SENSOR_1); } Off(OUT_AB); //Á°¿Ê¤·¤Ê¤¬¤é¡¢¥Ü¡¼¥ë¤òÎ¥¤·¡¢´·À¤Ë¤è¤Ã¤Æ¥·¥å¡¼¥È¤¹¤ë OnRevSync(OUT_AB,40,0); arm_unlock(); Wait(1500); Off(OUT_ABC); break; //¥×¥í¥°¥é¥à¤Î½ªÎ» } t0 = CurrentTick(); } }