練習問題で作成したプログラム (12班)

メンバー:☆遠藤雅志、加藤友里、宮本秀俊、荒井隆治

version ??
Last modified: Thu Dec 26 13:44:18 JST 2002


[必須] ロボットに鉛筆またはペンを取り付け、 A3 用紙の上に ★型を描かせなさい (練習問題 3.3)。

task main() 
{
     repeat(2){     
          OnFwd(OUT_A+OUT_C);
          Wait(200);
          OnFwd(OUT_A);
          OnRev(OUT_C);
          Wait(59);
     
          OnRev(OUT_A+OUT_C);
          Wait(200);
          OnFwd(OUT_A);
          OnRev(OUT_C);
          Wait(59);
     }          
          OnFwd(OUT_A+OUT_C);
          Wait(200);
          Float(OUT_A+OUT_C);
}
         
                                          

工夫した点:
鉛筆をロボットの中心に固定したことで安定感が増し、    線が曲がりにくくなった。

[必須] 机の上で動き回るロボットを作成しなさい。 ただし方向変換は机の端に来たときに行うこと (練習問題 4.2)。

task main()
{
  SetSensor(SENSOR_1,SENSOR_TOUCH);
  
  while(true)
  {
    OnFwd(OUT_A+OUT_C);
    until (SENSOR_1 == 1);
    Off(OUT_A+OUT_C);
    Wait(50);
    OnRev(OUT_A+OUT_C); 

     if(SENSOR_1 == 1)  
         {               
        OnFwd(OUT_A+OUT_C);   
         }              
    
        OnFwd(OUT_C);  
        OnRev(OUT_A); 
        Wait(150);
     }
} 

工夫した点:
前輪を上下に動くようにして、その上にセンサーを置いた部分

[必須] 前向きに光センサーを取り付けたロボットを作成し、 そのロボットがもっとも明るい方向 (例えば照らした懐中電灯の方向) を向くようにしなさい。 さらにそのロボットが、 懐中電灯の光を追いかけて進むようにプログラムを改良しなさい (練習問題 4.5.1, 4.5.2)

int light_number, light_number1, light_number2, max_light,max_light1, max_light2;
   int max_time, max_time1, max_time2, number, number1, number2, roll_number;
    int count,counting, quata; 
           
task main()
{
     SetSensor(SENSOR_1, SENSOR_LIGHT);      
     max_light = 0; 
     max_time = 0;
     light_number = 0;
     roll_number = 0; 
     count = 0; 
     quata = 0;
     for(number = 1; number <= 188; number++)
      {
        OnFwd(OUT_A);
        OnRev(OUT_C);
        Wait(1); 
        light_number = SENSOR_1;
        
        if(light_number > max_light){ 
           max_light = light_number;
           max_time = number; 
          }
       }
      roll_number = 218-max_time; 
      OnFwd(OUT_C);
      OnRev(OUT_A);
      Wait(roll_number);
      Off(OUT_A+OUT_C);
      while(1) 
      {
            light_number1 = 0;       
            light_number2 = 0; 
            max_light1 = 0;
            max_light2 = 0;
            count++;
            counting = 10;
            quata = 15;  

            if(count%4 == 0){
            counting = 30;      
            quata = 30;
            }
        
      for(number1=1; number1<=counting; number1++)
      {
         OnFwd(OUT_A);
         OnRev(OUT_C);
         Wait(1);
         light_number1 = SENSOR_1;
        
         if(light_number1 > max_light1){
             max_light1 = light_number1;
             max_time1 = number1;
          }

      }
      OnFwd(OUT_C); 
      OnRev(OUT_A);
      Wait(counting);
      
      for(number2=1; number2<=counting ; number2++)
      {
         OnFwd(OUT_C);
         OnRev(OUT_A);
         Wait(1);
         light_number2 = SENSOR__1;

        if(light_number2 > max_light2){  
          max_light2 = light_number2;
          max_time2 = number2;
        }  
       (OUT_A);

       }
       Wait(number2);
       OnFwd(OUT_A+OUTC);
       OnRev(OUT_C)
       Wait(counting);
       
       if(max_light1 > max_light2){ 
         max_light2 = light_number2;
         max_time2 = number2;
        }
       (OUT_A);
       }
       Wait(number2);
       OnFwd(OUT_A+OUT_C);
       Wait(quata);}
       if(max_light1 == max_light2){
       OnFwd(OUT_A+OUT_C);
       Wait(quata);}
         }

}


工夫した点:

[必須] 明るいところでは、長調で、暗いところでは短調で、 曲を演奏するプログラムを作成しなさい (曲は何でもよい) (練習問題 5.2)。


工夫した点:

[自由課題] 黒い線に沿って速く走るロボットを作成せよ (例題の改良)。

#define THRESHOLD 40

task main()
{
     SetSensor(SENSOR_1, SENSOR_LIGHT);
     /* ClearTimer(0);*/
     
      while(1) {
         if(SENSOR_1 > THRESHOLD) {
           OnFwd(OUT_A); 
           Off(OUT_C); 
      } else {
         Off(OUT_A); 
         OnFwd(OUT_C);       
         }
      }
}       
      

工夫した点:
ライトセンサーの位置を機体の中心にした部分


your_name