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

メンバー:相浦雅人、青木淳、久保敦史

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


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

#define MOVE_TIME 200
task main()
{
        OnFwd(OUT_A+OUT_C);         // AとCのモータを正回転
        Wait(200);                  // 2秒間前進
        repeat(4){
                OnFwd(OUT_A); 
                OnRev(OUT_C); 
                Wait(MOVE_TIME);    // 方向転換
                OnFwd(OUT_A+OUT_C); 
                Wait(200);          // 2秒間前進
        }
        Float(OUT_A+OUT_C);         // Off より滑らかに止まる
}
工夫した点:星型のズレを減らすために、ペンを中央付近に取り付けた。

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

task main()
{
        SetSensor(SENSOR_1,SENSOR_TOUCH);      // センサー端子1に接続されたセンサーが
                                               // タッチセンサーであると宣言
        while (true)
        {
                OnFwd(OUT_A+OUT_C) ;           // 前進
                if (SENSOR_1 == 0 )            //タッチセンサーが押されたら、
                {
                        OnRev(OUT_A+OUT_C) ; 
                        Wait(50);              // 0.5 秒間バックする
                        OnFwd(OUT_A) ; 
                        Wait(150);             // 1.5 秒間方向転換する
                }
        }
}
工夫した点:タッチセンサーの位置を、前方に少し距離をおいて付けることで、机から落ちにくくした。

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

#define RUN_TIME 50   // トレースする時間(単位 1/10 秒)
int lightmax;    
int timemax; 
   
task main ()
{
        SetSensor(SENSOR_1, SENSOR_LIGHT);

        while (true)
        {
                lightmax = 0;
                timemax = 0;

                ClearTimer(0);                                    // Timer(0) をリセット

                while ( Timer(0) <= RUN_TIME )
                {
                        OnFwd(OUT_A);
                        OnRev(OUT_C);
                        if (SENSOR_1 >= lightmax)
                        {
                                lightmax = SENSOR_1 ;
                                ClearTimer(1);                    // Timer(1) をリセット
                        }
                }
                timemax = Timer(1);
                ClearTimer(0);                                    // Timer(0) をリセット
                OnRev( OUT_A );
                OnFwd( OUT_C );
                until( Timer(0) >= timemax );
                OnFwd(OUT_A + OUT_C);
                Wait(50);
        }
}
工夫した点:

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

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


your_name