NQC入門

課題2

光センサーを駆使して、ラインをトレースするロボットを製作せよ。1週半が目標である。

ページ作成者

Dragnov

ロボットの紹介 

m22.jpg

ロボット自体はそこまで珍しい出来ではない

プログラム 

#define kyoukai 45
#define go OnFwd(OUT_AC); //前進
#define L OnFwd(OUT_C);Off(OUT_A); //左
#define R OnFwd(OUT_A);Off(OUT_C); //右
task main()
{
SetPower(OUT_A,0);
SetPower(OUT_C,0);
go;
Wait(40);
R;
Wait(90);
Off(OUT_AC);
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
int cross = 0; //両方黒になった回数をカウントする変数
while(cross!=33) //黒黒が20回来たら止める
{
 if(SENSOR_1 < kyoukai) {L;} //左側のセンサーが黒になったら左に曲がる
 if(SENSOR_3 < kyoukai) {R;} //右側のセンサーが黒になったら右に曲がる
 if(SENSOR_1 < kyoukai && SENSOR_3 < kyoukai) {L;cross++;} //両方黒になったら  cross=cross+1 直進
 if(SENSOR_1 > kyoukai && SENSOR_3 > kyoukai) {R;} //両方白になったら直進
}
Off(OUT_AC);
PlaySound(SOUND_UP);
go;
Wait(70);
while(cross!=46) //黒黒が20回来たら止める
{
 if(SENSOR_1 < kyoukai) {L;} //左側のセンサーが黒になったら左に曲がる
 if(SENSOR_3 < kyoukai) {R;} //右側のセンサーが黒になったら右に曲がる
 if(SENSOR_1 < kyoukai && SENSOR_3 < kyoukai) {L;cross++;} //両方黒になったらcross=cross+1 直進
 if(SENSOR_1 > kyoukai && SENSOR_3 > kyoukai) {R;} //両方白になったら直進
}
Off(OUT_AC);
PlaySound(SOUND_UP);
go;
Wait(50);
while(cross!=60) //黒黒が20回来たら止める
{
 if(SENSOR_1 < kyoukai) {L;} //左側のセンサーが黒になったら左に曲がる
 if(SENSOR_3 < kyoukai) {R;} //右側のセンサーが黒になったら右に曲がる
 if(SENSOR_1 < kyoukai && SENSOR_3 < kyoukai) {L;cross++;} //両方黒になったらcross=cross+1 直進
 if(SENSOR_1 > kyoukai && SENSOR_3 > kyoukai) {R;} //両方白になったら直進
}
Off(OUT_AC);
PlaySound(SOUND_UP);
SetPower(OUT_A,3);
SetPower(OUT_C,3);
while(cross!=59) //黒黒が20回来たら止める
{
 if(SENSOR_1 < kyoukai) {L;} //左側のセンサーが黒になったら左に曲がる
 if(SENSOR_3 < kyoukai) {R;} //右側のセンサーが黒になったら右に曲がる
 if(SENSOR_1 < kyoukai && SENSOR_3 < kyoukai) {go;cross++;} //両方黒になったらcross=cross+1 直進
 if(SENSOR_1 > kyoukai && SENSOR_3 > kyoukai) {go;} //両方白になったら直進
}
}

コース 

m21.jpg

感想 

途中で電池を換えたためにいろいろと変更する羽目になったが、何とかなってよかった。

コメントするの? 



添付ファイル: filem22.jpg 303件 [詳細] filem21.jpg 262件 [詳細]

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