2011a

メンバー紹介

show

 いち早くプログラミングを仕上げた強者。

まえだ

 例によって命名担当。

マシン紹介

 その名も「デュアルセンサー・リチャード・ネオ」

 DSC_0041.JPG

 今回もあえて基本のタイヤのタイプのマシンに2つの光センサーを付けたいたってシンプルなつくり。

 DSC_0042.JPG

 工夫したところは光センサーをできるだけ近づけ、機敏な動きをできるようにしたところ。

Myロード

 DSC_0039.JPG

プログラミング

showのプログラム

#define SHINE 40 //黒と白の境
sub usually() //普通の動き
{ if (SENSOR_3 < SHINE) {       //黒の時
                   OnFwd(OUT_A);   //左に動く
                   Off(OUT_C);
                } else {       //白の時
                   OnFwd(OUT_C);    //右に動く
                   Off(OUT_A);
                      }
 }
task main()
{
      SetSensor(SENSOR_1,SENSOR_LIGHT);
      SetSensor(SENSOR_3,SENSOR_LIGHT);
      ClearTimer(0); //交差点までの動き
      while(FastTimer(0)<=530) //5.3秒間
      { usually();
        }
      ClearTimer(0); //交差点を直進
      while(FastTimer(0)<=20) //0.2秒間
        {OnFwd(OUT_A+OUT_C); 
         PlaySound(SOUND_CLICK);  //合図として音を鳴らす
          }
      ClearTimer(0); //急カーブまでの動き
      while(FastTimer(0)<=400) //4秒間
      { usually();
        }
      ClearTimer(0); //急カーブの動き
      while(FastTimer(0)<=70) //0.7秒間
          {OnFwd(OUT_A);
           OnRev(OUT_C);
           PlaySound(SOUND_CLICK) ; //合図として音を鳴らす
             }
      ClearTimer(0); //急カーブまでの動き
      while(FastTimer(0)<=400) //4秒間
      { usually();
        }
      ClearTimer(0); //急カーブの動き
      while(FastTimer(0)<=50) //0.5秒間
          {OnFwd(OUT_A);
           OnRev(OUT_C);
           PlaySound(SOUND_CLICK) ; //合図として音を鳴らす
             }
      ClearTimer(0); //ロータリーまでの動き
      while(FastTimer(0)<=900) //9秒間
      { usually();
        }
      ClearTimer(0); //ロータリー内の動き
      while(FastTimer(0)<=70) //0.7秒間
      { OnFwd(OUT_C);
        Off(OUT_A);
        }
      ClearTimer(0); //直角までの動き
      while(FastTimer(0)<=400) //4秒間
      { usually();
        }
      ClearTimer(0); //直角の動き
      while(FastTimer(0)<=160) //1.6秒間
      { OnFwd(OUT_A);
        Off(OUT_C);
        }
      ClearTimer(0); //直角までの動き
      while(FastTimer(0)<=200) //2秒間
      { usually();
        }
      ClearTimer(0); //直角の動き
      while(FastTimer(0)<=160) //1.6秒間
      { OnFwd(OUT_A);
        Off(OUT_C);
        }
      ClearTimer(0); //ロータリーまでの動き
      while(FastTimer(0)<=300) //3秒間
      { usually();
        }
      ClearTimer(0); //ロータリーの回りの動き
      while(FastTimer(0)<=130) //1.3秒間
      { OnFwd(OUT_A);
        Off(OUT_C);
        }
      ClearTimer(0); //ロータリー内の動き
      while(FastTimer(0)<=30) //0.3秒間
      { usually();
        }
      ClearTimer(0); //ロータリーの回りの動き
      while(FastTimer(0)<=80) //0.8秒間
      { OnFwd(OUT_C);
        Off(OUT_A);
        }
      ClearTimer(0); //交差点までの動き
      while(FastTimer(0)<=220) //2.2秒間
      { usually();
        }
      ClearTimer(0); //交差点の動き
      while(FastTimer(0)<=20) //0.2秒間
        {OnFwd(OUT_A+OUT_C);
         PlaySound(SOUND_CLICK); //合図として音を鳴らす
          }
      ClearTimer(0); //再び交差点までの動き
      while(FastTimer(0)<=950) //9.5秒間
      { usually();
        }
      ClearTimer(0); //交差点の動き
      while(FastTimer(0)<=20) //0.2秒間
        {OnFwd(OUT_A+OUT_C);
         PlaySound(SOUND_CLICK); //合図として音を鳴らす
          }
      ClearTimer(0); //ゴールまでの動き
      while(FastTimer(0)<=250) //2.5秒間
      { usually();
        }
      Off(OUT_A+OUT_C); //ゴールで停止
}
        
      

まえだ

 使う動きは全てサブルーチンで統一。

sub go_straight() //まっすぐ
{
 OnFwd(OUT_A+OUT_C);
} 
sub turn_left() //左に進む
{
 OnFwd(OUT_C);
 Off(OUT_A);
}
sub turn_right() //右に進む
{
 OnFwd(OUT_A);
 Off(OUT_C);
}
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
ClearTimer(0);

 〆犬離札鵐機爾鮖箸ぁ∈犬砲修譴討靴泙辰燭蕁右に曲がる。それ以外はまっすぐ進む。

while(FastTimer(0)<=320)
{
 if(SENSOR_1<40)
 {
  go_straight();
 }
 else
 {
  turn_right();
 }
}
PlaySound(SOUND_UP);
ClearTimer(0);

 ∈犬離札鵐機爾鮖箸ぁ右にそれてしまったら左に曲がっていき、カーブをクリアする。

while(FastTimer(0)<=800)
{
 if(SENSOR_1<40)
 {
  go_straight();
 }
 else
 {
  turn_left();
 }
}
PlaySound(SOUND_UP);
ClearTimer(0);

 

while(FastTimer(0)<=280)
{
 if(SENSOR_1>40&&SENSOR_3>40)
 {
  turn_right();
 }
 if(SENSOR_1>40&&SENSOR_3<40)
 {
  turn_left();
 }
}
PlaySound(SOUND_UP);
ClearTimer(0);

 けΔ離札鵐機爾鮖箸ぁ黒線から出たら右に進み、黒線上では左に進むようにし、ジグザグに進むようにした。

while(FastTimer(0)<=260)
{
 if(SENSOR_3<40)
 {
  turn_left();
 }
 if(SENSOR_3>40)
 {
  turn_right();
 }
}
PlaySound(SOUND_UP);
ClearTimer(0);

 ズ犬離札鵐機爾鮖箸ぁ黒線上では

while(FastTimer(0)<=410)
{
 if(SENSOR_1<40)
 {
  go_straight();
 }
 else
 {
  turn_left();
 }
}
PlaySound(SOUND_UP);
ClearTimer(0);

 

while(FastTimer(0)<=270)
 {
  if(SENSOR_1>40&&SENSOR_3>40)
  {
   turn_right();
  }
  if(SENSOR_1>40&&SENSOR_3<40)
  {
   turn_left();
  }
 }
PlaySound(SOUND_UP);
ClearTimer(0);

 

while(FastTimer(0)<=120)
{
 if(SENSOR_1<40)
 {
  go_straight();
 }
 else
 {
  turn_right();
 }
}
PlaySound(SOUND_UP);
ClearTimer(0);

 

while(FastTimer(0)<=280)
{
 if(SENSOR_3<40)
 {
  turn_right();
 }
 if(SENSOR_3>40)
 {
  turn_left();
 }
}
PlaySound(SOUND_UP);
ClearTimer(0);

 

while(FastTimer(0)<=220)
{
 if(SENSOR_1<40)
 {
  go_straight();
 }
 else
 {
  turn_right();
 }
}
PlaySound(SOUND_UP);
ClearTimer(0);

 

while(FastTimer(0)<=280)
{
 if(SENSOR_3<40)
 {
  turn_right();
 }
 if(SENSOR_3>40)
 {
  turn_left();
 }
}
PlaySound(SOUND_UP);
ClearTimer(0);

 

while(FastTimer(0)<=300)
{
 if(SENSOR_1<40)
 {
  go_straight();
 }
 else
 {
  turn_left();
 }
}
PlaySound(SOUND_UP);
ClearTimer(0);

 

while(FastTimer(0)<=1500)
{
 if(SENSOR_1<40)
 {
  turn_right();
 }
 if(SENSOR_1>40)
 {
  turn_left();
 }
}
PlaySound(SOUND_UP);
Off(OUT_A+OUT_C);
}

 DSC_0043.JPG

反省

show

今回はマシンには時間がかからなかったが、プログラミングにすごい時間がかかった。

しかし授業で習ったことを生かし、思ったよりも早く完成することができた。

新たにならったwhileやifなどをうまく使えたと思う。

僕はセンサーひとつでライントレースだったので

交差点での判断の仕方をどうしたらよいかわからず

タイマー機能によって交差点の動きを指定した。

そこでタイマー機能を細かく使ってしまった。

確かに一周きちんと走行するところを先生にみていただいた。

しかしその後授業でタイマーは細かく使うと

電池の消費で変わってしまうことを教わった。

もう少し早くプログラムを組んでいたら先生にいただいたアドバイスを

マシンを崩す前に生かすことができたかもしれない。

だから次の課題ではそういうところ意識してやりたい。

まえだ

 前の反省にも書いたのだが、取り掛かるの遅かった。

 もう少し早ければ余裕をもって取り組めた。

 ただ、プログラミング自体は2回目とあって、スムーズに書くことができた。

 前回と違い次のことを想定したプログラミングをかけたと思う。

 このことは次回にも生かしたいと思う。

まとめ(感想)

show

この課題は非常に楽しく行うことができた。

時間をかけながらも少しずつ進んでいてゴールまで走りぬけた時は感動しました。

パートナーにもいろいろ助けてもらい、いいロボになったと思います。

次回も今回のこと生かして楽しく、上手くやっていきたいです。

まえだ

 今回の課題も苦しくも楽しくできた。

 プログラミングは苦しいが楽しいということが分かった課題でもあった。

 この調子で次回も楽しくやっていきたいと思う。

コメント

 コメントお願いします。

  • 例えば交差点での判断の仕方など、もう少しくプログラムの説明をしてください。 -- 松本 2011-07-01 (金) 17:29:10

今日: 1

昨日: 0

総合: &counter([total|today|yesterday]);

オンライン: 1


添付ファイル: fileDSC_0043.JPG 98件 [詳細] fileDSC_0042.JPG 104件 [詳細] fileDSC_0041.JPG 99件 [詳細] fileDSC_0039.JPG 115件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-08-08 (月) 04:15:07