[[2005/B7]]

目次
#contents

* 最初のプログラム [#n957ce46]
* 最初のプログラム [#qf51e1e9]

 // 最初のプログラム
 //
 //    作成者:かずま
 //    作成日:2005-10-14
 
 task main()
 {
     OnFwd(OUT_A+OUT_C);     //  AとCのモータを正回転
     Wait(300);              //  プログラムの実行を3秒待つ
     Off(OUT_A+OUT_C);       //  AとCのモータを止める
     Off(OUT_A+OUT_C);       //  AとCのモーターを止める
 }


#comment


* 正方形に沿って動くロボット [#sa1264ac]
* 正方形に沿って動くロボット [#g57bcd35]

 // 正方形に沿って動くロボット
 //
 //    作成者:かずま
 //    作成日:2005-10-21
 
task main()
{
    repeat(4)
    {
        OnFwd(OUT_A+OUT_C);
        Wait(200);
        Off(OUT_A+OUT_C);
        OnFwd(OUT_A);
        OnRev(OUT_C);
        Wait(100);
        Off(OUT_A+OUT_C);
    }
}
 task main()
 {
     repeat(4)
     {
         OnFwd(OUT_A+OUT_C);     //  AとCのモータを正回転
         Wait(200);              //  プログラムの実行を2秒待つ
         Off(OUT_A+OUT_C);       //  AとCのモータを止める
         OnFwd(OUT_A);           //  Aのモーターを正回転
         OnRev(OUT_C);           //  Cのモーターを逆回転
         Wait(100);              //  プログラムの実行を1秒待つ
         Off(OUT_A+OUT_C);       //  AとCのモーターを逆回転
     }
 }


#comment


*光を追いかけるプログラム [#n14ec8fa]

 #define AROUND_TIME 500        // ロボが一周するのにかかる時間を定義
 #define gosa 15                // 光センサの反応誤差を考慮
 #define search_frequency 20    // サーチの範囲を定義
 
 int light=0;
 int turn=0;
 
 void turn_right(int t)
 {
     OnFwd(OUT_A);
     OnRev(OUT_C);
     Wait(t);
     Off(OUT_A+OUT_C);
 }
 
 void turn_left(int t)
 {
     OnRev(OUT_A);
     OnFwd(OUT_C);
     Wait(t);
     Off(OUT_A+OUT_C);
 }
 
 sub search()
 {
     turn=turn + search_frequency;
     turn_right(turn);
     turn=turn + search_frequency;    
     turn_left(turn);
 }
 
 task main()
 {
     SetSensor(SENSOR_1, SENSOR_LIGHT);
     
     ClearTimer(0);
 
     OnFwd(OUT_A);
     OnRev(OUT_C);
 
     while(Timer(0) <= AROUND_TIME/10)
     {
         if(SENSOR_1 > light)
         {
             light=SENSOR_1;
             ClearTimer(0);
         }
 
         if(Timer(0) == AROUND_TIME/10)
         {
             Off(OUT_A+OUT_C);
         }
     }
     while(Timer(0) > AROUND_TIME/10)
     {
	 while(light - gosa <= SENSOR_1 <= light + gosa)
         {
             turn=0;
             OnFwd(OUT_A+OUT_C);
         }
	 
	 while((SENSOR_1 < light - gosa) || (SENSOR_1 > light + gosa))
         {
             search();
         }	
     }
 }

・なんでかうまくいかない…orz
-3つ以上の値を比較する場合には、2つの値を比較する条件式を組み合わせてください。 -- [[松本(教員)]] &new{2006-02-02 (木) 12:31:55};

#comment


*光を追いかけるプログラム2 [#tff3accb]

 #define AROUND_TIME 500
 #define error 12
 #define search_range 20
 
 int light=0;
 int time=0;
 int move_time=0;
 int turn=0;
 
 void turn_right(int t)
 {
     OnFwd(OUT_A);
     OnRev(OUT_C);
     Wait(t);
 }
 
 void turn_left(int t)
 {
     OnRev(OUT_A);
     OnFwd(OUT_C);
     Wait(t);
 }
 
 sub search()
 {
     turn=turn + search_range;
     turn_right(turn);
     turn=turn + search_range;
     turn_left(turn);
 }
 
 task main()
 {
     SetSensor(SENSOR_1, SENSOR_LIGHT);
     
     ClearTimer(0);
 
     OnFwd(OUT_A);
     OnRev(OUT_C);
 
     while(Timer(0) <= AROUND_TIME/10)
     {
         if(SENSOR_1 > light)
         {
             light=SENSOR_1;
             time=Timer(0);
	     
	     if(time <= AROUND_TIME/20)
	     {
	         move_time=time;
	     }
	     
	     if(time > AROUND_TIME/20)
	     {
	         move_time=AROUND_TIME/10 - time;
	     }
         }
 
         if(Timer(0) == AROUND_TIME/10)
         {
             Off(OUT_A+OUT_C);
         }
     }
 
     while(AROUND_TIME/10 < Timer(0) <= AROUND_TIME/10 + move_time)
     {
         if(time <= AROUND_TIME/20)
         {
             turn_right(move_time);
             Off(OUT_A+OUT_C);
         }
 
         if(time > AROUND_TIME/20)
         {
             turn_left(move_time);
             Off(OUT_A+OUT_C);
         }
     }
 
     while(Timer(0) > AROUND_TIME/10 + move_time)
     {
         while(light - error <= SENSOR_1 <= light + error)
         {
             turn=0;
             OnFwd(OUT_A+OUT_C);
         }
 
         while((SENSOR_1 < light - error) || (SENSOR_1 > light + error))
         {
             search();
         }
     }
 }

・上のがうまくいかないのに発展型を作ってしもた。当然うまくいかない…orzなぜじゃぁぁぁぁぁぁぁ!!!


#comment

*作りかけ [#r336d4de]
 #define Do 523
 #define Re 587
 #define Mi 659
 #define Fa 698
 #define So 784
 #define Ra 880
 #define Si 988
 #define DO 1047
 #define RE 1175
 #define MI 1319
 #define FA 1397 
 
 #define X1 10
 #define x1 13
 #define X2 20
 #define x2 25
 #define X3 30
 #define x3 38
 #define X4 40
 #define x4 50
 #define X6 60
 #define x6 75
 #define X8 80
 #define x8 100
 #define X16 160
 #define x16 200 
 
 task play_music()
 {
     while (true)
     {
         PlayTone(Fa,X2); Wait(x2);
 	PlayTone(Ra,X2); Wait(x2);
 	PlayTone(DO,X2); Wait(x2);
 	PlayTone(RE,X6); Wait(x6);
 	PlayTone(RE,X2); Wait(x2);
 	PlayTone(MI,X2); Wait(x2);
 	PlayTone(RE,X2); Wait(x2);
 	PlayTone(MI,X2); Wait(x2);
 	PlayTone(FA,X8); Wait(x8);
     }
 }  
 
 task main()
 {
     start play_music;
 }


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