2011a

チームメンバー

TAMA MIYA

課題内容

黒い線をライントレースするロボットを作る

プログラム

直角

#define THRESHOLD 45
#define go OnFwd(OUT_A+OUT_C); //前進
#define L OnFwd(OUT_C);Off(OUT_A); //左
#define R OnFwd(OUT_A);Off(OUT_C); //右
task main()
{
 SetSensor(SENSOR_1, SENSOR_LIGHT);
 SetSensor(SENSOR_3, SENSOR_LIGHT);
 int cross = 0; //両方黒になった回数をカウントする変数
//
 while(cross!=2) //黒黒が2回来たら止める
 {
  if(SENSOR_1 < THRESHOLD) {L;} //左側のセンサーが黒になったら左に曲がる
  if(SENSOR_3 < THRESHOLD) {R;} //右側のセンサーが黒になったら右に曲がる
  if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD) {go;cross++;} //両方黒になったらcross=cross+1 直進
  if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;} //両方白になったら直進
 }
Off(OUT_A+OUT_C);
PlaySound(SOUND_UP);
 cross = 0;
 //                                                    ロータリー開始
 while(cross!=1) //黒黒が1回来たら止める
 {
  if(SENSOR_1 < THRESHOLD) {L;}//左側のセンサーが黒になったら左に曲がる
  if(SENSOR_3 < THRESHOLD) {R;}//右側のセンサーが黒になったら右に曲がる
  if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
   {OnFwd(OUT_A);Wait(90);cross++;}//cross=cross+1
  if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;} 
 }
Off(OUT_A+OUT_C);
PlaySound(SOUND_UP);
 cross = 0;
//
 while(cross!=1) //黒黒が1回来たら止める
 {
  if(SENSOR_1 < THRESHOLD) {L;}//左側のセンサーが黒になったら左に曲がる
  if(SENSOR_3 < THRESHOLD) {R;}//右側のセンサーが黒になったら右に曲がる
  if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
   {OnFwd(OUT_A);Wait(90);cross++;}//cross=cross+1
  if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;}
 }
Off(OUT_A+OUT_C);
PlaySound(SOUND_UP);
 cross = 0;
//
 while(cross!=1) //黒黒が1回来たら止める
 {
  if(SENSOR_1 < THRESHOLD) {L;}//左側のセンサーが黒になったら左に曲がる
  if(SENSOR_3 < THRESHOLD) {R;}//右側のセンサーが黒になったら右に曲がる
  if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
   {OnFwd(OUT_A);Wait(90);cross++;}//cross=cross+1
  if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;} 
 }
Off(OUT_A+OUT_C);
PlaySound(SOUND_UP);
 cross = 0;
                                                    //ロータリー終了
ClearTimer(0);
 while(Timer(0) <= 125)
 {
  if(SENSOR_1 < THRESHOLD) {L;}//左側のセンサーが黒になったら左に曲がる
  if(SENSOR_3 < THRESHOLD) {R;}//右側のセンサーが黒になったら右に曲がる
  if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD) {go;}
  if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;} 
 }
OnFwd(OUT_C);Off(OUT_A);Wait(150);
Off(OUT_A+OUT_C);
PlaySound(SOUND_UP);  //交差点〜直角まで
 cross = 0;
                                                    // ロータリー開始
  while(cross!=1) //黒黒が1回来たら止める
 {
  if(SENSOR_1 < THRESHOLD) {L;}//左側のセンサーが黒になったら左に曲がる
  if(SENSOR_3 < THRESHOLD) {R;}//右側のセンサーが黒になったら右に曲がる
  if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
   {OnFwd(OUT_A);Wait(90);cross++;}//cross=cross+1
  if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;} 
 }
Off(OUT_A+OUT_C);
PlaySound(SOUND_UP);
 cross = 0;
// 
 while(cross!=1) //黒黒が1回来たら止める
 {
  if(SENSOR_1 < THRESHOLD) {L;}//左側のセンサーが黒になったら左に曲がる
  if(SENSOR_3 < THRESHOLD) {R;}//右側のセンサーが黒になったら右に曲がる
  if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
   {OnFwd(OUT_A);Wait(90);cross++;}//cross=cross+1
  if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;}
 }
Off(OUT_A+OUT_C);
PlaySound(SOUND_UP);
 cross = 0;
//
 while(cross!=1) //黒黒が1回来たら止める
 {
  if(SENSOR_1 < THRESHOLD) {L;}//左側のセンサーが黒になったら左に曲がる
  if(SENSOR_3 < THRESHOLD) {R;}//右側のセンサーが黒になったら右に曲がる
  if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
   {OnFwd(OUT_A);Wait(90);cross++;}//cross=cross+1
  if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;} 
 }
Off(OUT_A+OUT_C);
PlaySound(SOUND_UP);
 cross = 0;
                                                     // ロータリー終了
  while(true)
  {
  if(SENSOR_1 < THRESHOLD) {Off(OUT_A+OUT_C);}
  if(SENSOR_3 < THRESHOLD) {R;}//右側のセンサーが黒になったら右に曲がる
  if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD) {Off(OUT_A+OUT_C);}
  if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;}  //ゴール
 }
}

近道

#define THRESHOLD 45
#define go OnFwd(OUT_A+OUT_C); //前進
#define L OnFwd(OUT_C);Off(OUT_A); //左
#define R OnFwd(OUT_A);Off(OUT_C); //右
task main()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
int cross = 0; //両方黒になった回数をカウントする変数
                        // ロータリー開始
while(cross!=1) //黒黒が1回来たら止める
{
 if(SENSOR_1 < THRESHOLD) {L;} //左側のセンサーが黒になったら左に曲がる
 if(SENSOR_3 < THRESHOLD) {R;} //右側のセンサーが黒になったら右に曲がる
 if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
  {OnFwd(OUT_A);Wait(90);cross++;} 両方黒になったらcross=cross+1 直進
 if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;} 両方白になったら直進
}
Off(OUT_A+OUT_C);
PlaySound(SOUND_UP);
cross = 0;
//
while(cross!=1) //黒黒が1回来たら止める
{
 if(SENSOR_1 < THRESHOLD) {L;}//左側のセンサーが黒になったら左に曲がる
 if(SENSOR_3 < THRESHOLD) {R;}//右側のセンサーが黒になったら右に曲がる
 if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
  {OnFwd(OUT_A);Wait(90);cross++;}//cross=cross+1
 if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;}
}
Off(OUT_A+OUT_C);
PlaySound(SOUND_UP);           
cross = 0;
//
while(cross!=1) //黒黒が1回来たら止める
{
 if(SENSOR_1 < THRESHOLD) {L;}//左側のセンサーが黒になったら左に曲がる
 if(SENSOR_3 < THRESHOLD) {R;}//右側のセンサーが黒になったら右に曲がる
 if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
  {OnFwd(OUT_A);Wait(90);cross++;}//cross=cross+1
 if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;} 
}
Off(OUT_A+OUT_C);
PlaySound(SOUND_UP);
cross = 0;
                                                 //ロータリー終了
OnFwd(OUT_A);Off(OUT_C);Wait(90);
Off(OUT_A+OUT_C);
PlaySound(SOUND_UP);
cross = 0;
//
while(cross!=7) //黒黒が7回来たら止める
{
 if(SENSOR_1 < THRESHOLD) {L;}//左側のセンサーが黒になったら左に曲がる
 if(SENSOR_3 < THRESHOLD) {R;}//右側のセンサーが黒になったら右に曲がる
 if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD) {go;cross++;}//cross=cross+1
 if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;} //近道
}
Off(OUT_A+OUT_C);
PlaySound(SOUND_UP);
cross = 0;
                                                  //ロータリー開始
while(cross!=1) //黒黒が1回来たら止める
{
 if(SENSOR_1 < THRESHOLD) {L;}//左側のセンサーが黒になったら左に曲がる
 if(SENSOR_3 < THRESHOLD) {R;}//右側のセンサーが黒になったら右に曲がる
 if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
  {OnFwd(OUT_A);Wait(90);cross++;}//cross=cross+1
 if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;} 
}
Off(OUT_A+OUT_C);
PlaySound(SOUND_UP);
cross = 0;
//
while(cross!=1)//黒黒が1回来たら止める
{
 if(SENSOR_1 < THRESHOLD) {L;}//左側のセンサーが黒になったら左に曲がる
 if(SENSOR_3 < THRESHOLD) {R;}//右側のセンサーが黒になったら右に曲がる
 if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
  {OnFwd(OUT_A);Wait(90);cross++;}//cross=cross+1
 if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;}
}
Off(OUT_A+OUT_C);
PlaySound(SOUND_UP);
cross = 0;
//
while(cross!=1) //黒黒が1回来たら止める
{
 if(SENSOR_1 < THRESHOLD) {L;}//左側のセンサーが黒になったら左に曲がる
 if(SENSOR_3 < THRESHOLD) {R;}//右側のセンサーが黒になったら右に曲がる
 if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
  {OnFwd(OUT_A);Wait(90);cross++;}//cross=cross+1
 if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;} 
}
Off(OUT_A+OUT_C);
PlaySound(SOUND_UP);
cross = 0;
                                                //ロータリー終了
while(cross!=3) //黒黒が3回来たら止める
{
 if(SENSOR_1 < THRESHOLD) {L;}//左側のセンサーが黒になったら左に曲がる
 if(SENSOR_3 < THRESHOLD) {R;}//右側のセンサーが黒になったら右に曲がる
 if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD) {go;cross++;}//cross=cross+1
 if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;}
}
Off(OUT_A+OUT_C);
PlaySound(SOUND_UP);
cross = 0;
//
while(true)
{
 if(SENSOR_1 < THRESHOLD) {Off(OUT_A+OUT_C);}
 if(SENSOR_3 < THRESHOLD) {R;}//右側のセンサーが黒になったら右に曲がる
 if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD) {Off(OUT_A+OUT_C);}
 if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;}  //ゴール
}
}

ロボット紹介

IMG_7436.jpg

12.jpg

コース紹介

15.jpg

条件をみたしつつできるだけ簡単なコースにしてみたつもりです。

感想

コメント



添付ファイル: file15.jpg 341件 [詳細] file13.jpg 187件 [詳細] file12.jpg 424件 [詳細] fileIMG_8651.jpg 185件 [詳細] fileIMG_7436.jpg 315件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-08-05 (金) 15:54:43