目次

最初

作成日:11月18日
作成者:Dezz 

#define turn_TIME 104                   // 曲がる時間(変更                                                    
                                         // 可)

sub turn_left()                          // 左に曲がる
{
  SetPower(OUT_A,7);
  SetPower(OUT_C,7);
  OnRev(OUT_A);OnFwd(OUT_C);      
  Wait(turn_TIME);Off(OUT_A+OUT_C);Wait(50);
}


task main()
{ 
 SetSensor(SENSOR_1,SENSOR_TOUCH);      // 端子1タッチセンサ
 SetSensor(SENSOR_3,SENSOR_TOUCH);      // 端子3タッチセンサ 
  
  while(true)
  {
    if ( SENSOR_1 == 1 )                
     {
      SetPower(OUT_A,7);
      SetPower(OUT_C,7);
      OnRev(OUT_A+OUT_C);               // 1が押されると後退
      Wait(20);                         // 後退時間
      turn_left();                      // 左ターン
     }
    
    if ( SENSOR_3 == 1 )                // 3が押されると
     {
      SetPower(OUT_A,0);
      SetPower(OUT_C,7);
      OnFwd(OUT_A+OUT_C);               // 曲進
      Wait (20) ;                       // 曲進時間
     }
    
    else                                //1,3離れると
     {
      SetPower(OUT_A,7);
      SetPower(OUT_C,7);
      OnFwd(OUT_A+OUT_C);Wait(10)       //少し前進
      OnFwd(OUT_A);OnRev(OUT_C);        //左にターン
      OnFwd(OUT_A+OUT_C);Wait(10)       //少し前進
      Wait (30) ;                       //3が押されるまで
     }
  }                                     //繰り返し...
}

改良版

 #define turn_TIME 104              

sub turn_left()                      
{
  OnRev(OUT_A);OnFwd(OUT_C);      
  Wait(turn_TIME);Off(OUT_A+OUT_C);Wait(50);
}


task main()
{ 
 SetSensor(SENSOR_1,SENSOR_TOUCH);     
 SetSensor(SENSOR_3,SENSOR_TOUCH);    
  
  while(true)
  {
    if (( SENSOR_1 == 0)&&( SENSOR_3 == 1 ))
     {
      OnFwd(OUT_A+OUT_C);
     }                    
    
    if ( SENSOR_1 == 1 )               
     {
      OnRev(OUT_A+OUT_C);               
      Wait (50) ;  
     }                    
    
    if (( SENSOR_3 == 0 ) &&  ( SENSOR_1 == 0 ))                   
     {      
      OnFwd(OUT_A);                  
     }
  }                                     
}

改良版2

#define turn_TIME 104              

sub turn_left()                      
{
 OnRev(OUT_A);OnFwd(OUT_C);      
 Wait(turn_TIME);Off(OUT_A+OUT_C);Wait(50);
}

task main()
{ 
SetSensor(SENSOR_1,SENSOR_TOUCH);     
SetSensor(SENSOR_3,SENSOR_TOUCH);    
 
 while(true)
 {
   if (( SENSOR_1 == 0)&&( SENSOR_3 == 1 ))
    {
     Off (OUT_A+OUT_C);
     OnFwd(OUT_C);Wait(10);Off (OUT_A+OUT_C); 
     OnFwd(OUT_C+OUT_A);
    }                    
   
   if ( SENSOR_1 == 1 )               
    {
     Off (OUT_A+OUT_C); 
     OnRev(OUT_A+OUT_C);               
     Wait (30) ;turn_left();
     OnFwd(OUT_A);Wait(20);OnFwd(OUT_C+OUT_A);
     until(SENSOR_3 == 1);
    }                    
   
   if (( SENSOR_3 == 0 ) &&  ( SENSOR_1 == 0 ))                   
    {
     Off (OUT_A+OUT_C);    
     OnFwd(OUT_A);                
    }
  }                                     
}

戻る


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-11-29 (火) 17:17:11 (5015d)