[[ロボティクス入門ゼミ]]
*ライントレース2 [#z7016f24]
 task main ()
 {
   SetSensor(SENSOR_1, SENSOR_LIGHT);
   SetSensor(SENSOR_3, SENSOR_LIGHT);
   SetSensor(SENSOR_2, SENSOR_TOUCH);
    
    while (true) 
    {
        if (SENSOR_1 < THRESHOLD)           // (1)黒線上に いるとき
        {
            OnFwd(OUT_A);
            Off(OUT_C);
        } 
        if (SENSOR_3 < THRESHOLD)           // (3)黒線上にいるとき
        {
            OnFwd(OUT_C);
            Off(OUT_A);
        }
        if (SENSOR_2==1 )
       {
           OnFwd(OUT_A);OnRev(OUT_C);Wait(70);    //タッチしたら180°反転する
           OnFwd(OUT_C);wWait(30);
           OnFwd(OUT_C);OnRev(OUT_A);Wait(70);
           OnFwd(OUT_A);Wait(200);
           OnFwd(OUT_C);OnRev(OUT_A);Wait(90);
           OnFwd(OUT_A);
            
       }
         
     }         
*ライントレース1 [#a5949867]
 task main ()
 {
   SetSensor(SENSOR_1, SENSOR_LIGHT);
   SetSensor(SENSOR_3, SENSOR_LIGHT);
   SetSensor(SENSOR_2, SENSOR_TOUCH);
   
    while (true) 
    {
        if (SENSOR_1 < THRESHOLD)           // (1)黒線上にいるとき
        {
            OnFwd(OUT_A);
            Off(OUT_C);
        } 
        if (SENSOR_3 < THRESHOLD)           // (3)黒線上にいるとき
        {
            OnFwd(OUT_C);
            Off(OUT_A);
        }
        if (SENSOR_2==1 )
       {
           OnFwd(OUT_A);OnRev(OUT_C);Wait(150);    //タッチしたら180°反転する
           OnFwd(OUT_C);
       }
         
     }         
 }
*改良作品 [#xf6923c4]
 /*  黒い線をトレースするロボット のプログラム  */
 #define THRESHOLD 40   // 閾値
 task main ()
 {
    SetSensor(SENSOR_1, SENSOR_LIGHT);
    SetSensor(SENSOR_3, SENSOR_LIGHT);
    SetSensor(SENSOR_2,SENSOR_TOUCH);
    
     while (true) 
     {
         if (SENSOR_1 < THRESHOLD)           // (1)黒線上にいるとき
         {
             OnFwd(OUT_A);
             Off(OUT_C);
         } 
         if (SENSOR_3 < THRESHOLD)           // (3)黒線上にいるとき
         {
             OnFwd(OUT_C);
             Off(OUT_A);
         }         
      }         
 }
*試作 [#q945510a]
 /*  ?????????g??Å[?X???????{?b?g ???v???O????  */
 
 #define THRESHOLD 40   // ???l
 task main ()
 {
    SetSensor(SENSOR_2, SENSOR_LIGHT);
    SetSensor(SENSOR_1,SENSOR_TOUCH);
  SetSensor(SENSOR_3,SENSOR_TOUCH);
   
 OnFwd(OUT_A+OUT_C);
         if (SENSOR_2 < THRESHOLD) 
         {   // ???????…???????´
             OnFwd(OUT_A);
             Off(OUT_C);
         } 
         else 
         {                      // ?????????O???Ω???´
             Off(OUT_A);
             OnFwd(OUT_C);
         }
   
        if (SENSOR_1==1 )
      {
           OnFwd(OUT_A);OnRev(OUT_C);      Wait(150);
           OnFwd(OUT_C);
      }
      
       if (SENSOR_3==1 )
      {
           OnFwd(OUT_C);OnRev(OUT_A);      Wait(150);
           OnFwd(OUT_A);
      }
  }
*6月2日 [#h252caf1]
**タッチセンサーを使ったプログラム [#t8eefb15]
 task main()
 {
    
    SetSensor(SENSOR_1,SENSOR_TOUCH);
    SetSensor(SENSOR_3,SENSOR_TOUCH);
    
    while(true)
    {
        OnFwd(OUT_A+OUT_C);
        until ((SENSOR_1==1) || (SENSOR_3==1));
        OnRev(OUT_A+OUT_C);Wait(50);
        OnFwd(OUT_A);Wait(150);
        
        
        OnFwd(OUT_C);
        
     }  
  }
**ifバージョン [#p777d05f]
 task main()
  {
      SetSensor(SENSOR_1,SENSOR_TOUCH);
   SetSensor(SENSOR_3,SENSOR_TOUCH);
   
   OnFwd(OUT_A+OUT_C);
   while(true)
   {
       if (SENSOR_1==1 )
       {
            OnRev(OUT_A+OUT_C);             Wait(50);
            OnFwd(OUT_A);OnRev(OUT_C);      Wait(100);
            OnFwd(OUT_C);
       }
       
        if (SENSOR_3==1 )
       {
            OnRev(OUT_A+OUT_C);             Wait(50);
            OnFwd(OUT_C);OnRev(OUT_A);      Wait(100);
            OnFwd(OUT_A);
       }
  }
 }  
          
*5月13日 [#icb17dc5]

**課題1...書道ロボット...『水』 [#u21d8dc0]

 task main()

 task main()
 {
 OnFwd(OUT_A+OUT_C);
 Wait(200);
 OnFwd(OUT_C);
 OnRev(OUT_A);
 Wait(135);
 OnFwd(OUT_A+OUT_C);
 Wait(50);
 Off(OUT_A+OUT_C);

 OnFwd(OUT_B);
 Wait(5);
 Off(OUT_B);

 OnFwd(OUT_A+OUT_C);
 Wait(100);
 Off(OUT_A+OUT_C); 

 OnFwd(OUT_C);
 OnRev(OUT_A);
 Wait(108);
 Off(OUT_A+OUT_C);

 OnRev(OUT_B);
 Wait(5);
 Off(OUT_B);

 OnFwd(OUT_A+OUT_C);
 Wait(50);
 OnFwd(OUT_A);
 OnRev(OUT_C);
 Wait(41);
 OnRev(OUT_A+OUT_C);
 Wait(100);
 Off(OUT_A+OUT_C);

 OnFwd(OUT_B);
 Wait(5);
 Off(OUT_B);

 OnFwd(OUT_C);
 OnRev(OUT_A);
 Wait(16);
 Off(OUT_A+OUT_C);

 OnFwd(OUT_A+OUT_C);
 Wait(170);
 OnFwd(OUT_C);
 OnRev(OUT_A);
 Wait(20);
 Off(OUT_A+OUT_C);

 OnRev(OUT_B);
 Wait(10);
 Off(OUT_B);

 OnRev(OUT_A+OUT_C);
 Wait(60);
 OnFwd(OUT_C);
 OnRev(OUT_A);
 Wait(40);
 OnFwd(OUT_A+OUT_C);
 Wait(120);
 Off(OUT_A+OUT_C);
 
 OnFwd(OUT_B);
 Wait(5);
 Off(OUT_B);

 }
//    作成者:
//    作成日:2006-5-23

 #define back(t) OnFwd(OUT_C);Wait(t);Off(OUT_C);
 #define front(t) OnRev(OUT_C);Wait(t);Off(OUT_C);
 #define right(t) OnRev(OUT_B);Wait(t);Off(OUT_B);
 #define left(t) OnFwd(OUT_B);Wait(t);Off(OUT_B);
 #define up OnFwd(OUT_A);Wait(30);Off(OUT_A);
 #define down OnRev(OUT_A);Wait(30);Off(OUT_A);
 
 task main()
 {
 down(30);back(150);                     //1
 OnRev(OUT_C);OnFwd(OUT_B);Wait(10);Off(OUT_C+OUT_B);
 up;left(20);front(115);
 down;right(30);
 OnFwd(OUT_C+OUT_B);Wait(30);Off(OUT_C+OUT_B);
 up;right(70);
 }


*6//23 [#xc0ca91e]
#define TURN_TIME 200
#define light(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_A+OUT_C);
int light_max=(0); 
int time_max=(0);
task main()
{
   SetSensor(SENSOR_1,SENSOR_LIGHT);
   ClearTimer(0);
   
   OnFwd(OUT_A);OnRev(OUT_C);
   while(FastTimer(0)<TURN_TIME);
   {
        if(SENSOR_1>light_max);
        {
        light_max=SENSOR_1;
        time_max=FastTimer(0);
        }
   light (200-time_max);
   
   OnRev(OUT_A+OUT_C);Wait(50);Off(OUT_A+OUT_C);
   }
}

else+右旋回
 #define THRESHOLD 40 
 task main ()
 {
   SetSensor(SENSOR_1, SENSOR_LIGHT);
   SetSensor(SENSOR_3, SENSOR_LIGHT);
   SetSensor(SENSOR_2, SENSOR_TOUCH);
    
    while (true) 
    {
        if (SENSOR_1 < THRESHOLD)   //黒線上にきたらAを回転         
        {
            OnFwd(OUT_A);
            Off(OUT_C);
        }
     else
         {
           OnFwd(OUT_C);
            Off(OUT_A);
          }
        if (SENSOR_3 < THRESHOLD)  //黒線上にきたらCを回転         
        {
            OnFwd(OUT_C);
            Off(OUT_A);
        }
         else
        {
           OnFwd(OUT_A);
            Off(OUT_C);
         }  
        if (SENSOR_2==1 )             //ぶつかったら右から避ける
       {
           OnFwd(OUT_A);OnRev(OUT_C);Wait(70);    
           OnFwd(OUT_C);Wait(150);
           OnFwd(OUT_C);OnRev(OUT_A);Wait(70);
           OnFwd(OUT_A);Wait(300);
           OnFwd(OUT_C);OnRev(OUT_A);Wait(90);
           OnFwd(OUT_A);
            
       }
         
     }
    }


 else+半回転
 #define THRESHOLD 40 
 task main ()
 {
   SetSensor(SENSOR_1, SENSOR_LIGHT);
   SetSensor(SENSOR_3, SENSOR_LIGHT);
   SetSensor(SENSOR_2, SENSOR_TOUCH);
    
    while (true) 
    {
       if (SENSOR_1 < THRESHOLD)   //黒線上にきたらAを回転         
        {
            OnFwd(OUT_A);
            Off(OUT_C);
        }
     else
         {
           OnFwd(OUT_C);
            Off(OUT_A);
          }
        if (SENSOR_3 < THRESHOLD)  //黒線上にきたらCを回転         
        {
            OnFwd(OUT_C);
            Off(OUT_A);
        }
         else
        {
           OnFwd(OUT_A);
            Off(OUT_C);
         }  
        if (SENSOR_2==1 )             //ぶつかったら半回転
       {
           OnFwd(OUT_A);OnRev(OUT_C);Wait(150);             
       }
         
     }
    }

 else+右旋回
 #define THRESHOLD 40 
 task main ()
 {
   SetSensor(SENSOR_1, SENSOR_LIGHT);
   SetSensor(SENSOR_3, SENSOR_LIGHT);
   SetSensor(SENSOR_2, SENSOR_TOUCH);
    
    while (true) 
    {
        if (SENSOR_1 < THRESHOLD)   //黒線上にきたらAを回転         
        {
            OnFwd(OUT_A);
            Off(OUT_C);
        }
     else
         {
           OnFwd(OUT_C);
            Off(OUT_A);
          }
        if (SENSOR_3 < THRESHOLD)  //黒線上にきたらCを回転         
        {
            OnFwd(OUT_C);
            Off(OUT_A);
        }
         else
        {
           OnFwd(OUT_A);
            Off(OUT_C);
         }
      if ((SENSOR_1 > THRESHOLD) && (SENSOR_3 > THRESHOLD))
         {
      OnFwd(OUT_A);OnFwd(OUT_C);
          } 
        if (SENSOR_2==1 )             //ぶつかったら半回転
       {
           OnFwd(OUT_A);OnRev(OUT_C);Wait(150);             
       }
         
     }
    }
*7/7 [#nc9e91fc]
**明るい方向へ・「第六の幸運をもたらす宿」 [#v72eebf6]
 #define C 523
 #define D 587
 #define E 659
 #define F 698
 #define G 784
 #define A 440
 #define B 494
 
 task play_music(1)
 {
   while(true)
     {
        PlayTone(G,25);Wait(30);
        PlayTone(E,25);Wait(30);
        PlayTone(G,50);Wait(55);
        PlayTone(G,25);Wait(30);
        PlayTone(E,25);Wait(30);
        PlayTone(G,50);Wait(55);
        PlayTone(A,25);Wait(30); 
        PlayTone(G,25);Wait(30);
        PlayTone(F,25);Wait(30);
        PlayTone(E,25);Wait(30);
        PlayTone(D,25);Wait(80);
        PlayTone(E,25);Wait(30);
        PlayTone(F,50);Wait(55);
        PlayTone(G,25);Wait(30); 
        PlayTone(C,25);Wait(30);
        PlayTone(C,25);Wait(30);
        PlayTone(C,25);Wait(30);
        PlayTone(C,12);Wait(17);
        PlayTone(D,12);Wait(17);
        PlayTone(E,12);Wait(17);
        PlayTone(F,12);Wait(17);
        PlayTone(G,50);Wait(55);
        PlayTone(G,25);Wait(30);
        PlayTone(D,25);Wait(30);
        PlayTone(D,25);Wait(30);
        PlayTone(F,25);Wait(30);
        PlayTone(E,25);Wait(30);
        PlayTone(D,25);Wait(30);
        PlayTone(C,50);Wait(55);
        Wait(20);
     }
 }

 #define C  523
 #define C# 554
 #define D  587
 #define D# 622
 #define E  659
 #define F  698
 #define F# 740
 #define G  784
 #define G# 831
 #define A  440
 #define A# 446
 #define B  494
 
 task play_music(2)      //音楽を演奏するタスク
 {
        while(true)
     {
        PlayTone(E,50);Wait(40);
        PlayTone(D,25);Wait(15);
        PlayTone(C,25);Wait(15);
 
        PlayTone(C,75);Wait(65);
        PlayTone(C,25);Wait(15);
        PlayTone(G,50);Wait(40);
        PlayTone(A,50);Wait(40);
        PlayTone(G,33);Wait(23);
        PlayTone(F,33);Wait(23); 
        PlayTone(G,33);Wait(23);
 
        PlayTone(E,50);Wait(40);
        PlayTone(D,25);Wait(15);
        PlayTone(C,25);Wait(15);
        PlayTone(C,75);Wait(65);
        PlayTone(E,25);Wait(15);
        PlayTone(G,50);Wait(40); 
        PlayTone(F,33);Wait(23);
        PlayTone(E,33);Wait(23);
        PlayTone(F,33);Wait(23);
        PlayTone(E,50);Wait(40);
 
        PlayTone(E,50);Wait(40);
        PlayTone(D,25);Wait(15);
        PlayTone(C,25);Wait(15);
 
        PlayTone(C,75);Wait(65);
        PlayTone(C,25);Wait(15);
        PlayTone(G,50);Wait(40);
        PlayTone(A,50);Wait(40);
        PlayTone(G,33);Wait(23);
        PlayTone(F,33);Wait(23); 
        PlayTone(G,33);Wait(23);
 
        PlayTone(E,50);Wait(40);
        PlayTone(D,25);Wait(15);
        PlayTone(C,25);Wait(15);
        PlayTone(C,75);Wait(65);
        PlayTone(E,25);Wait(15);
        PlayTone(G,50);Wait(40); 
        PlayTone(F,33);Wait(23);
        PlayTone(E,33);Wait(23);
        PlayTone(D,33);Wait(23);
        PlayTone(C,100);Wait(90);
        Wait(50);
      }
 }
 
 #define TURN_TIME 200
 #define right(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);
 #define left(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);
 #define front OnFwd?(OUT_A+OUT_C);
 
 task main () 
 {
   int light_max=0; 
   int time_max=0;
   SetSensor(SENSOR_1,SENSOR_LIGHT);
   SetSensor(SENSOR_3,SENSOR_LIGHT);
 
   light_max=SENSOR_1;            //センサー1が最大
   ClearTimer(0);                 //タイマーを0
   OnFwd(OUT_A);OnRev(OUT_C);     //光を探す左回転
 
   while(time_max<TURN_TIME){     //タイマーは20秒以内
       start play_music ;
       if(SENSOR_1>light_max)        //もし1が最大なら
       {
           light_max=SENSOR_1;//最大値を更新
           time_max=FastTimer(0);
       }
      left(200-time_max);     //一周から時間を差し引い
       front;
   }
  
   while(true)
   {
       if((SENSOR_1>=light_max)&&(SENSOR_3>=light_max))
       {
           front;
       }
       if((SENSOR_1<=light_max)&&(SENSOR_3>=light_max))
       {
           OnRev(OUT_A);OnFwd(OUT_C);
           until((SENSOR_1>=light_max)&&(SENSOR_3>=light_max));
       }
       if((SENSOR_1>=light_max)&&(SENSOR_3<=light_max))
       {
           OnFwd(OUT_A);OnRev(OUT_C);
           until((SENSOR_1>=light_max)&&(SENSOR_3>=light_max));
       }
   }
 }




task main()
{
         SetSensor(SENSOR_1,SENSOR_TOUCH);
         SetPower(OUT_A,2);
         SetPower(OUT_C,2);
         SetPower(OUT_B,5);
         ClearTimer(0);
         
         OnFwd(OUT_A+OUT_C);
         while (true)
         {
                if(SENSOR_1==1)
                {
                     Off(OUT_A+OUT_C);Wait(100);
                     OnFwd(OUT_B);
                     OnFwd(OUT_A+OUT_C);Wait(150);
                     Off(OUT_A+OUT_C);
                     OnRev(OUT_B);Wait(50);
                     OnRev(OUT_A+OUT_C);Wait(100);
                     Off(OUT_A+OUT_C+OUT_B);Wait(300);
                     OnFwd(OUT_A+OUT_C);Wait(150);
                     OnFwd(OUT_A+OUT_C);
                    while(true) 
                     if(SENSOR_1==1)
                     {
                            Off(OUT_A+OUT_B);
                            OnFwd(OUT_B);Wait(100);
                            OnRev(OUT_A+OUT_C);Wait(150);
                            OnRev(OUT_B);Wait(50);
                            Off(OUT_A+OUT_C+OUT_B);
                      }
                  }                     
         }
}


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS