[[2011a]]

#contents

*チームメンバー [#qe9c7412]
TAMA
みや

*課題内容 [#vc9baee3]

**黒い線をライントレースするロボットを作る [#o41d0829]
-周回コースの条件
-交差点が2ヶ所ある
-ロータリーが1つある
-ニアピンカーブを1つ
-スタートとゴールを作る
-直角な曲がる道を作る
-直角に曲がる道を通らないとか道を作る
-ペアの同士で逆回りと近道か直角で分ける

*プログラム [#o5c2dd11]

**直角 [#ocd3846d]
 #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)
  {
   if(SENSOR_1 < THRESHOLD) {L;}
   if(SENSOR_3 < THRESHOLD) {R;}
   if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD) {go;cross++;}
   if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;}
  }
 Off(OUT_A+OUT_C);
 PlaySound(SOUND_UP);
  cross = 0;
  //                                                    ロータリー開始
  while(cross!=1)
  {
   if(SENSOR_1 < THRESHOLD) {L;}
   if(SENSOR_3 < THRESHOLD) {R;}
   if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
    {OnFwd(OUT_A);Wait(90);cross++;}
   if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;} 
  }
 Off(OUT_A+OUT_C);
 PlaySound(SOUND_UP);
  cross = 0;
 //
  while(cross!=1)
  {
   if(SENSOR_1 < THRESHOLD) {L;}
   if(SENSOR_3 < THRESHOLD) {R;}
   if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
    {OnFwd(OUT_A);Wait(90);cross++;}
   if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;}
  }
 Off(OUT_A+OUT_C);
 PlaySound(SOUND_UP);
  cross = 0;
 //
  while(cross!=1)
  {
   if(SENSOR_1 < THRESHOLD) {L;}
   if(SENSOR_3 < THRESHOLD) {R;}
   if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
    {OnFwd(OUT_A);Wait(90);cross++;}
   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)
  {
   if(SENSOR_1 < THRESHOLD) {L;}
   if(SENSOR_3 < THRESHOLD) {R;}
   if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
    {OnFwd(OUT_A);Wait(90);cross++;}
   if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;} 
  }
 Off(OUT_A+OUT_C);
 PlaySound(SOUND_UP);
  cross = 0;
 // 
  while(cross!=1)
  {
   if(SENSOR_1 < THRESHOLD) {L;}
   if(SENSOR_3 < THRESHOLD) {R;}
   if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
    {OnFwd(OUT_A);Wait(90);cross++;}
   if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;}
  }
 Off(OUT_A+OUT_C);
 PlaySound(SOUND_UP);
  cross = 0;
 //
  while(cross!=1)
  {
   if(SENSOR_1 < THRESHOLD) {L;}
   if(SENSOR_3 < THRESHOLD) {R;}
   if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
    {OnFwd(OUT_A);Wait(90);cross++;}
   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;} 
  }
 PlaySound(SOUND_UP);
 }
**近道 [#sf0813d5]
 #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)
 {
  if(SENSOR_1 < THRESHOLD) {L;}
  if(SENSOR_3 < THRESHOLD) {R;}
  if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
   {OnFwd(OUT_A);Wait(90);cross++;}
  if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;} 
 }
 Off(OUT_A+OUT_C);
 PlaySound(SOUND_UP);
 cross = 0;
 //
 while(cross!=1)
 {
  if(SENSOR_1 < THRESHOLD) {L;}
  if(SENSOR_3 < THRESHOLD) {R;}
  if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
   {OnFwd(OUT_A);Wait(90);cross++;}
  if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;}
 }
 Off(OUT_A+OUT_C);
 PlaySound(SOUND_UP);
 cross = 0;
 //
 while(cross!=1)
 {
  if(SENSOR_1 < THRESHOLD) {L;}
  if(SENSOR_3 < THRESHOLD) {R;}
  if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
   {OnFwd(OUT_A);Wait(90);cross++;}
  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)
 {
  if(SENSOR_1 < THRESHOLD) {L;}
  if(SENSOR_3 < THRESHOLD) {R;}
  if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD) {go;cross++;}
  if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;}
 }
 Off(OUT_A+OUT_C);
 PlaySound(SOUND_UP);
 cross = 0;
                                                   //ロータリー開始
 while(cross!=1)
 {
  if(SENSOR_1 < THRESHOLD) {L;}
  if(SENSOR_3 < THRESHOLD) {R;}
  if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
   {OnFwd(OUT_A);Wait(90);cross++;}
  if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;} 
 }
 Off(OUT_A+OUT_C);
 PlaySound(SOUND_UP);
 cross = 0;
 //
 while(cross!=1)
 {
  if(SENSOR_1 < THRESHOLD) {L;}
  if(SENSOR_3 < THRESHOLD) {R;}
  if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
   {OnFwd(OUT_A);Wait(90);cross++;}
  if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;}
 }
 Off(OUT_A+OUT_C);
 PlaySound(SOUND_UP);
 cross = 0;
 //
 while(cross!=1)
 {
  if(SENSOR_1 < THRESHOLD) {L;}
  if(SENSOR_3 < THRESHOLD) {R;}
  if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD)
   {OnFwd(OUT_A);Wait(90);cross++;}
  if(SENSOR_1 > THRESHOLD && SENSOR_3 > THRESHOLD) {go;} 
 }
 Off(OUT_A+OUT_C);
 PlaySound(SOUND_UP);
 cross = 0;
                                                 //ロータリー終了
 while(cross!=3)
 {
  if(SENSOR_1 < THRESHOLD) {L;}
  if(SENSOR_3 < THRESHOLD) {R;}
  if(SENSOR_1 < THRESHOLD && SENSOR_3 < THRESHOLD) {go;cross++;}
  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;} 
 }
 PlaySound(SOUND_UP);
 }
*ロボット紹介 [#y441cb8c]



&ref(IMG_7436.jpg);
-走りやすいようにタイヤを使用し、本体は前の課題のもものをそのまま使いそこに光センサーを取り付けました。

&ref(12.jpg);
-光センサーは本体から遠いと急なカーブに対応できなかったので結構本体寄りにして急カーブや細かい動きに対応できるようにしました。



*コース紹介 [#tb6e6432]


コースの写真
&ref(15.jpg);

条件をみたしつつできるだけ簡単なコースにしてみたつもりです。
-交差点が斜めっていると進みずらいので交差点は両方共できるだけ直交するようにつくりました。
-走りやすいようにできるだけ直線を多く取り入れました。
-長く作ったりしないで出来だけ短く簡単に作ったつもりです。
-長く作ったりしないで出来だけ短く簡単に作りました。

*反省 [#h2ce3feb]

*感想 [#kc6dc980]
-プログラムが難しく、できるかどうか不安だったが、どうにか作ることができた。
-思ったよりも全然難しくて、とても時間がかかったし大変でした。

**TAMA [#tb289f9c]

*コメント [#x3caa9ae]
#comment

**みや [#wbf08a07]


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS