[[2006a/A3/試作品]]

[[ロボティクス入門ゼミ]]
#contents
*5/12 の授業 [#hb5ff3d7]
**初めてのプログラム [#h74a8186]
 task main()
   {
   OnFwd(OUT_A);
   OnFwd(OUT_C);
   Wait(150) ;
   OnFwd(OUT_A+OUT_C);
   Wait(500);
   OnRev(OUT_C);
   OnFwd(OUT_A);
   Wait(300);
   OnFwd(OUT_A+OUT_C);
   Wait(300);
   Float(OUT_A+OUT_C);
   }
テキトーに作ってみたからどのように動くのかわからない…
*5/19の授業 [#sc4c18b4]
*課題1 [#g90df32a]
**「水」を書くプログラム [#y4a36eeb]
  task main()
 {
  OnFwd(OUT_B);
  Wait(40);
  Off(OUT_B);
  
  OnFwd(OUT_A+OUT_C);
  Wait(130);
  Off(OUT_A+OUT_C);
  
  OnRev(OUT_B);
  Wait(10);
  Off(OUT_B);
  
  OnFwd(OUT_A);
  Wait(100);
  OnRev(OUT_C);
  Wait(100);
  Off(OUT_A+OUT_C);
  
  OnRev(OUT_A+OUT_C);
  Wait(42);
  Off(OUT_A+OUT_C);
  
  OnFwd(OUT_B);
  Wait(40);
  Off(OUT_B);
  
  OnFwd(OUT_A+OUT_C);
  Wait(30);
  Off(OUT_A+OUT_C);
  
  OnRev(OUT_B);
  Wait(10);
  Off(OUT_B);
  
  OnFwd(OUT_C);
  Wait(30);
  Off(OUT_C);
  
  OnFwd(OUT_A+OUT_C);
  Wait(110);
  Off(OUT_A+OUT_C);
  
  OnFwd(OUT_A);
  Wait(80);
  OnRev(OUT_C);
  Wait(80);
  Off(OUT_A+OUT_C);
  
  OnRev(OUT_A+OUT_C);
  Wait(10);
  Off(OUT_A+OUT_C);
  
  OnFwd(OUT_B);
  Wait(40);
  Off(OUT_B);
  
  OnFwd(OUT_A+OUT_C);
  Wait(35);
  Off(OUT_A+OUT_C);
  
  OnRev(OUT_B);
  Wait(10);
  Off(OUT_B);
  
  OnFwd(OUT_A);
  Wait(210);
  Off(OUT_A);
  
  OnRev(OUT_A+OUT_C);
  Wait(70);
  Off(OUT_A+OUT_C);
  
  OnFwd(OUT_B);
  Wait(40);
  Off(OUT_B);
  
  OnFwd(OUT_A+OUT_C);
  Wait(70);
  Off(OUT_A+OUT_C);
  
  OnRev(OUT_B);
  Wait(10);
  Off(OUT_B);
  
  OnRev(OUT_A+OUT_C);
  Wait(140);
  Off(OUT_A+OUT_C);
  
  OnFwd(OUT_B);
  Wait(40);
  Off(OUT_B);
  
  OnFwd(OUT_A+OUT_C);
  Wait(50);
  Off(OUT_A+OUT_C);
  
  OnRev(OUT_B);
  Wait(10);
  Off(OUT_B);
  
  OnFwd(OUT_C);
  Wait(140);
  Off(OUT_C);
  
  OnRev(OUT_A+OUT_C);
  Wait(80);
  Off(OUT_A+OUT_C);
  
  OnFwd(OUT_B);
  Wait(40);
  Off(OUT_B);
  
  OnFwd(OUT_A+OUT_C);
  Wait(100);
  Float(OUT_A+OUT_C);
  
  OnRev(OUT_B);
  Wait(10);
  Off(OUT_B);
  }

*6月16日 [#ue4954f7]
**ライントレースしながらほかのロボにぶつかって反転するプログラム [#lf7ab55b]
 
  #define turn_RIGHT ;OnFwd(OUT_A);OnRev(OUT_C);Wait(150);
 task main () 
 {
      SetSensor(SENSOR_1, SENSOR_LIGHT);
      SetSensor(SENSOR_3,SENSOR_LIGHT);
      SetSensor(SENSOR_2,SENSOR_TOUCH);
      while (true) {
          OnFwd(OUT_A+OUT_C);
              if (SENSOR_1 <  45)  {
                    OnFwd(OUT_C);
               OnRev(OUT_A);
               until (SENSOR_1>45);}
         if(SENSOR_3<40) {
           OnFwd(OUT_A);
           OnRev(OUT_C);
            until(SENSOR_3>45);      }     
            
            
     if(SENSOR_2==1) {    //タッチセンサーが反応した場合
      OnRev(OUT_A+OUT_C);    //0.8秒後退
      Wait(80);
      turn_RIGHT  //逆向きになるまで回転
      }
  }    
 }

*6月23日 [#q36d5a3c]
**ライントレースしながらほかのロボにぶつかるとよけるプログラム [#p7644a93]

   #define THRESHOLD 40
 task main ()
 {
 SetSensor(SENSOR_1, SENSOR_LIGHT);/センサー1をライトセンサーと宣言
 SetSensor(SENSOR_2, SENSOR_LIGHT);/センサー2をライトセンサーと宣言
 SetSensor(SENSOR_3, SENSOR_TOUCH);/センサー3をタッチセンサーと宣言    
 OnFwd(OUT_A+OUT_C);
 while (true) {
 if (SENSOR_3 == 1) {
 OnRev(OUT_A+OUT_C) ; Wait(50);0.5秒後退する
 Off(OUT_A+OUT_C);
 OnRev(OUT_C);
 Wait(150);/モーターCを1.5秒逆回転
 OnFwd(OUT_A+OUT_C);
 Wait(150);/1.5秒進む
 Off(OUT_A);
 Wait(150);1.5秒左回転させる
 OnFwd(OUT_A);
 Wait(150); 
 Off(OUT_A); 
 Wait(150);
 OnFwd(OUT_A);/モーターAを動かし元のコースに戻る
 } else {
 if (SENSOR_1 < 40) {
 Off(OUT_A);
 OnFwd(OUT_C);センサー1に黒線が入ると左回転
 }                                                                       
 if (SENSOR_2 < 40) { 
 OnFwd(OUT_A);
 Off(OUT_C);センサー2に黒線が入ると右回転
 }
 }
 }
 }

**光を追いかけるプログラム [#kaa26561]
 #define ROOP 100 //ロボが一周する時間
 #define LEFT_X  OnFwd(OUT_A);OnRev(OUT_C);Wait(1);Off(OUT_A+OUT_C);//左回転
 #define RIGHT_X OnFwd(OUT_C);OnRev(OUT_A);Wait(1);Off(OUT_A+OUT_C);//右回転

 task main()
 {
    SetSensor(SENSOR_2,SENSOR_LIGHT);
       int light_max = 0;  //「見つけた明るさ」の最大値
       int i = 0;          
       
       for(i=0; i<=ROOP; i++){
          LEFT_X;                  //まず左に一周しつつ
	  if(SENSOR_2>light_max){  //このlight_maxを
             light_max = SENSOR_2; //見つけた中で、一番明るい
	     }                     //明るさの値に塗り変える。
	   }
       
       Off(OUT_A+OUT_C);           //とりあえず一周したら
       Wait(50);                   //休憩してみる
       
       repeat(10){                     //上で見つけた明るさを元に
       for(i=0; i<=ROOP; i++){       //右回転で探しては前進、探しては前進
          if(light_max-10>=SENSOR_2){
	      RIGHT_X;
          }
          else{
	     Off(OUT_A+OUT_C);Wait(10); //最も明るい所よりも若干、暗くても進ませます。
            OnFwd(OUT_A+OUT_C);
            Wait(30);
            Float(OUT_A+OUT_C);
	     Wait(50);
	   }
       }
    }
 }


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