2019a/Member

目次

課題について

詳しくはこちらを参照2019a/Mission2

ロボットについて

ろぼっと1.jpg
ろぼっと2.jpg

プログラムについて

定義について

#define BLACK 28 //黒色の値
#define WHITE 54 //白色の値
#define SPEED_H 30 //速い方のスピード
#define SPEED_L 20 //遅い方のスピード
#define go_forward OnFwd(OUT_BC,SPEED_H); //前進
#define turn_left1 OnFwd(OUT_B,SPEED_L);Off(OUT_C); //ゆっくり左折
#define turn_left2 OnFwd(OUT_B,SPEED_H);Off(OUT_C); //速く左折
#define turn_left3 OnFwd(OUT_B,SPEED_L);OnRev(OUT_C,10); //急カーブ(左)
#define turn_right1 Off(OUT_B);OnFwd(OUT_C,SPEED_L); //ゆっくり右折
#define turn_right2 Off(OUT_B);OnFwd(OUT_C,SPEED_H); //速く右折
#define turn_right3 OnRev(OUT_B,10);OnFwd(OUT_C,SPEED_L); //急カーブ(右)
#define STEP 1

線をトレースするプログラム

void follow_line()
{
    long t0=0,t_BLACK=0,t_max=110;
    t0=CurrentTick();
    while(t_BLACK<t_max){
        if(SENSOR_3>BLACK){ //黒灰のとき
            turn_left2;
        } else if(SENSOR_3>BLACK+5){ //灰のとき
            go_forward;
        } else if(SENSOR_3>WHITE-5){ //白灰のとき
            turn_right2;
        } else if(SENSOR_3>WHITE){ //白のとき
            turn_right1;
        } else{ //黒のとき
            turn_left1;
            t0=CurrentTick();
            until((SENSOR_3<BLACK+5)&&(SENSOR_3>BLACK));
            t_BLACK=CurrentTick()-t0;
        }
        Wait(STEP);
    }
}

ヘアピンカーブを曲がるプログラム

void follow_line()
{
    long t0=0,t_BLACK=0,t_max=110;
    t0=CurrentTick();
    while(t_BLACK<t_max){
        if(SENSOR_3>BLACK){ //黒灰のとき
            turn_left2;
        } else if(SENSOR_3>BLACK+5){ //灰のとき
            go_forward;
        } else if(SENSOR_3>WHITE-5){ //白灰のとき
            turn_right2;
        } else if(SENSOR_3>WHITE){ //白のとき
            turn_right3;
        } else{ //黒のとき
            turn_left3;
            t0=CurrentTick();
            until((SENSOR_3<BLACK+5)&&(SENSOR_3>BLACK));
            t_BLACK=CurrentTick()-t0;
        }
        Wait(STEP);
    }
}

交差点を突き進むプログラム

void cross_line()
{
    go_forward;
    until(SENSOR_3>WHITE-5);
    turn_right2;
    until(SENSOR_3>BLACK);
}

全体のプログラム

上記のプログラムを組み合わせてこのように組んだ。

task main()
{
    SetSensorLight(S3);
    follow_line(); //AからDまで
    cross_line(); //D地点の交差点
    follow_line(); //ゴールまで突っ込む
    Off(OUT_`BC);
}

結果

考察

感想と反省

感想

反省


添付ファイル: fileろぼっと2.jpg 147件 [詳細] fileろぼっと1.jpg 126件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-08-12 (月) 23:58:39