2005/B7

☆右チーム☆(ブリトニー&かずま)

目次

プログラム

ライントレースのプログラム(試作)〔モーター2個〕

// ライントレースのプログラム
//
//    作成者:かずま
//    作成日:2005-11-18

#define THRESHOLD 45    // 閾値

task main()
{
    SetSensor(SENSOR_1, SENSOR_LIGHT);    // センサ端子1に接続されたセンサが 
                                          // 光センサであると宣言
    SetSensor(SENSOR_3, SENSOR_LIGHT);    // センサ端子3に接続されたセンサが 
                                          // 光センサであると宣言
    SetPower(OUT_A,3);                    // 出力Aのパワーを3に設定

    SetPower(OUT_C,3);                    // 出力Cのパワーを3に設定

    while(true)
    {
        if((SENSOR_1 < THRESHOLD) && (SENSOR_3 > THRESHOLD))    // センサ1が黒線上かつセンサ3が黒線外のとき
        {
            OnFwd(OUT_C);                                       // 出力Cのみ前進する
            Off(OUT_A);
        }

        if((SENSOR_1 > THRESHOLD) && (SENSOR_3 < THRESHOLD))    // センサ1が黒線外かつセンサ3が黒線上のとき
        {
            OnFwd(OUT_A);                                       // 出力Aのみ前進する
            Off(OUT_C);
        }

        else                                                    // センサ1、センサ3がともに黒線上又は黒線外のとき
        {
            OnFwd(OUT_A+OUT_C);                                 // 前進する
        }
    }
}

・思ったより難しい...直角と鋭角のカーブがあやしいなぁ。ゆっくり動かせば何とかなるかと思って、パワーを捨てました。コースを太くした方が良いのかも(-_-;)

ライントレースのプログラム(試作2号)〔モーター2個〕

// ライントレースのプログラム
//
//    作成者:かずま
//    作成日:2005-11-24

#define THRESHOLD 45    // 閾値

task main()
{
    SetSensor(SENSOR_1, SENSOR_LIGHT);    // センサ端子1に接続されたセンサが 
                                          // 光センサであると宣言
    SetSensor(SENSOR_3, SENSOR_LIGHT);    // センサ端子3に接続されたセンサが 
                                          // 光センサであると宣言
    SetPower(OUT_A,3);                    // 出力Aのパワーを3に設定

    SetPower(OUT_C,3);                    // 出力Cのパワーを3に設定

    while(true)
    {
        if((SENSOR_1 < THRESHOLD) && (SENSOR_3 > THRESHOLD))    // センサ1が黒線上かつセンサ3が黒線外のとき
        {
            Off(OUT_A+OUT_C);
            OnFwd(OUT_C);                                       // 左回転する
            OnRev(OUT_A);
        }

        if((SENSOR_1 > THRESHOLD) && (SENSOR_3 < THRESHOLD))    // センサ1が黒線外かつセンサ3が黒線上のとき
        {
            Off(OUT_A+OUT_C);
            OnFwd(OUT_A);                                       // 右回転する
            OnRev(OUT_C);
        }

        else                                                    // センサ1、センサ3がともに黒線上又は黒線外のとき
        {
            Off(OUT_A+OUT_C);
            OnFwd(OUT_A+OUT_C);                                 // 前進する
        }
    }
}

・より鋭くカーブできるように改良!(さらに遅くなったけど…)なぜか左折が苦手、光センサーが原因かなぁ?

ライントレースのプログラム(完成版)〔モーター2個〕

// ライントレースのプログラム
//
//    作成者:かずま
//    作成日:2005-11-24

#define THRESHOLD 45    // 閾値

task main()
{
    SetSensor(SENSOR_1, SENSOR_LIGHT);    // センサ端子1に接続されたセンサが 
                                          // 光センサであると宣言
    SetSensor(SENSOR_3, SENSOR_LIGHT);    // センサ端子3に接続されたセンサが 
                                          // 光センサであると宣言
    while(true)
    {
        if((SENSOR_1 < THRESHOLD) && (SENSOR_3 > THRESHOLD))    // センサ1が黒線上かつセンサ3が黒線外のとき
        {
            Off(OUT_A+OUT_C);
            OnFwd(OUT_C);                                       // 左回転する
            OnRev(OUT_A);
        }

        if((SENSOR_1 > THRESHOLD) && (SENSOR_3 < THRESHOLD))    // センサ1が黒線外かつセンサ3が黒線上のとき
        {
            Off(OUT_A+OUT_C);
            OnFwd(OUT_A);                                       // 右回転する
            OnRev(OUT_C);
        }

        if((SENSOR_1 > THRESHOLD) && (SENSOR_3 > THRESHOLD))    // センサ1、センサ3がともに黒線外のとき
        {
            Off(OUT_A+OUT_C);
            OnFwd(OUT_A+OUT_C);                                 // 前進する
        }
    }
}

・elseを無くしたらなぜか出来ました。SetPowerもあんまり意味ない気がしたんで排除。ちなみに、両方のセンサが黒線上のときのプログラムがないのはわざとです。

ライントレースのロボット(完成版)〔モーター1個〕

// ライントレースのプログラム
//
//    作成者:かずま
//    作成日:2005-12-8

#define THRESHOLD 45    // 閾値

task main()
{
    SetSensor(SENSOR_2, SENSOR_LIGHT);    // センサ端子2に接続されたセンサが 
                                          // 光センサであると宣言
    
    while(true)
    {
        if(SENSOR_2 < THRESHOLD)          //センサ2が黒線上のとき
        {
            Off(OUT_B);
            OnFwd(OUT_B);                 //モーターBを正回転
        }
        
        if(SENSOR_2 > THRESHOLD)          //センサ2が黒線外のとき
        {
            Off(OUT_B);
            OnRev (OUT_B);                //モーター2を逆回転
        }
    }
}

シンプル・イズ・ベストですな。これでうまくいきます。

ロボット写真

右チームのラインロボ1 右チームのラインロボ2 右チームのラインロボ3 右チームのラインロボ4 右チームのラインロボ5

走るコース

かわいらしいWCマークにしました♪

  ↓↓↓↓↓↓↓↓

右チームのコース

線をちょっと太くしました

  ↓↓↓↓↓↓↓↓

右チームのコースその2

感想

難しかった点

工夫した点

反省点

感想

コメントはこちらまで


戻る


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-02-17 (金) 21:58:02