[[NQC入門]]

#contents

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

** ページ作成者 [#n38f3527]
Dragnov


** ロボットの紹介 [#n38f3527]
#ref(m22.jpg)

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

** プログラム [#n38f3527]

#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()
{
 #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) {L;cross++;} //両方黒になったら  cross=cross+1 直進
  if(SENSOR_1 > kyoukai && SENSOR_3 > kyoukai) {R;} //両方白になったら直進
 }

Off(OUT_AC);
PlaySound(SOUND_UP);
go;
Wait(70);
 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);
 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);
 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;} //両方白になったら直進
 }

}
 }

** コース [#n38f3527]
#ref(m21.jpg)


** 感想 [#n38f3527]

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

** コメントするの? [#n38f3527]
#comment(below)

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS