[[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();
        }
 }

¥È¥Ã¥×   ¿·µ¬ °ìÍ÷ ¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS