[[池尻のノート>2005/C1/池尻]]
[[四角形>2005/C1/四角形]]

*四角形[#hed12ed1]
**プログラム [#eff22c62]
 #define MOVE_TIME 145
 task main()
 {
     OnFwd(OUT_A);
     OnFwd(OUT_C);
     Wait(300);
     OnFwd(OUT_A);
     OnRev(OUT_C);
     Wait(MOVE_TIME);
     OnFwd(OUT_A);
     OnFwd(OUT_C);
     Wait(300);
     OnFwd(OUT_A);
     OnRev(OUT_C);
     Wait(MOVE_TIME);
     OnFwd(OUT_A);
     OnFwd(OUT_C);
     Wait(300);
     OnFwd(OUT_A);
     OnRev(OUT_C);
     Wait(MOVE_TIME);#define MOVE_TIME 145
 }
**感想 [#bcdd5024]
 まあまあ簡単やった。
*練習問題(妥協の右) [#hed12ed1]
**プログラム [#eb9aea6c]
 #define MOVE_TIME 18  //90度回るために必要な時間
 sub lift_up()         //リフトを上げるためのサブルーチン
 {
  Wait(40);           
   OnRev(OUT_B);
   Wait(50);
   Off(OUT_B);
 }
 
 sub lift_down()      //リフトを下げるためのサブルーチン
 {
  Wait(40);
   OnFwd(OUT_B);
   Wait(50);
   Off(OUT_B);
 }
 
 sub go_straight()   //直進するためのサブルーチン
 {
  Wait(50);
 repeat(3){
   OnFwd(OUT_A);
   OnFwd(OUT_C);
   Wait(10);
   Off(OUT_A+OUT_C);
   Wait(10);}
 }
 
 sub turn_right()   //右に曲がるためのサブルーチン
 {
  Wait(50);
   OnFwd(OUT_A);
   OnRev(OUT_C);
   Wait(MOVE_TIME);
   Off(OUT_A+OUT_C);
 }
 
 sub turn_left()   //左に曲がるためのサブルーチン
 {
  Wait(50);
   OnRev(OUT_A);
   OnFwd(OUT_C);
   Wait(MOVE_TIME);
   Off(OUT_A+OUT_C);
 }
 
 task main()
 {
  Wait(50);       //連続して動かすと徐々に誤差がでるため
   OnFwd(OUT_A);  //全ての行動の前には基本的に0、5秒間を開ける
   OnFwd(OUT_C);  //
   Wait(10);      //最初の「ノ」の字の飛び出る部分です
   Off(OUT_A+OUT_C);
 
  Wait(50);       //タイヤを片方固定、もう一方を動かして、
   OnFwd(OUT_A);  //タイヤの間隔を利用し「ノ」の曲線部分を表現
   Wait(40);
   Off(OUT_A);
 
   turn_right();
 
   lift_up();     //筆を上げる
 
  Wait(50);      
   OnFwd(OUT_A);
   OnFwd(OUT_C);
   Wait(20);
   Off(OUT_A+OUT_C);
   OnFwd(OUT_C);
   Wait(5);
   Off(OUT_C);
 
   turn_right();
 
   lift_down();
 
  Wait(50);            //モーターの左右のパワーバランスが良くないの
 repeat(4){            //で、小刻み、且つ微調整を行う
   OnFwd(OUT_A);
   OnFwd(OUT_C);
   Wait(10);
   Off(OUT_A+OUT_C);
   Wait(10);}
 
  Wait(50);
   OnFwd(OUT_A);
   OnRev(OUT_C);
   Wait(30);
   Off(OUT_A+OUT_C);
 
   lift_up();
 
    Wait(50);
 repeat(4){         //モーターの左右のパワーバランスが良くないの
   OnFwd(OUT_A);    //で、小刻み、且つ微調整を行う。さっきも書いたね!
   OnFwd(OUT_C);
   Wait(10);
   Off(OUT_A+OUT_C);
   Wait(10);}
 
  Wait(50);         //「口」の字に到達
   OnRev(OUT_A);
   OnFwd(OUT_C);
   Wait(12);
   Off(OUT_A+OUT_C);
 
   lift_down();
 
   go_straight();
 
   lift_up();
 
  Wait(50);
 repeat(4){
   OnRev(OUT_A);
   OnRev(OUT_C);
   Wait(5);
   Off(OUT_A+OUT_C);
   Wait(10);}
 
  turn_left();    //サブルーチンのオンパレード
 
  lift_down();
 
  go_straight();
 
  turn_right();
 
  go_straight();
 
  turn_right();
 
  lift_up();
 
  go_straight();
 
  turn_right();
 
  turn_right();
 
  lift_down();
 
  go_straight();
 
  }                 //終了
マシンのバランスが悪いためか、直進が右にカーブしてしまう素敵な機能を持っていたため、改良に改良を重ねました。結果、成功しました。
*タッチセンサー [#hed12ed1]
*光センサー [#hed12ed1]
  #define T 40
  
 task main ()
 {
      SetSensor(SENSOR_2,SENSOR_LIGHT);
      
       while (true) {
        if (SENSOR_2 < T) {   
            OnFwd(OUT_A);
            Off(OUT_C);
        } else {                      
            Off(OUT_A);
            OnFwd(OUT_C);
        }
    }
 }
*光センサー(前後に1個設置) [#hed12ed1]
 #define T 40
 
 task main ()
 {
     SetSensor(SENSOR_1,SENSOR_LIGHT);
     SetSensor(SENSOR_3,SENSOR_LIGHT);
      while (true) {
       if ((SENSOR_1 < T) &&(SENSOR_3 < T)){   
           OnFwd(OUT_A);
           OnFwd(OUT_C);
       } if (SENSOR_1 < T){                     
           OnFwd(OUT_A);
           Off(OUT_C);
       }if(SENSOR_3 < T){
           Off(OUT_A);
           OnFwd(OUT_C);
   }
 }
 }
[[課題1:書道ロボット(右)>2005/C1/課題1:書道ロボット(右)]]

[[課題2:壁に沿って動くロボット>2005/C1/課題2:壁に沿って動くロボット]]

[[課題3:黒い線に沿って動くロボット>2005/C1/課題3:黒い線に沿って動くロボット]]

[[課題4:光を追いかけるロボット>2005/C1/課題4:光を追いかけるロボット]]

[[課題5:演奏するロボット>2005/C1/課題5:演奏するロボット]]


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS