目次

今回の課題

  1. 全方向から懐中電灯の方向を探しだし、懐中電灯に向けてブロックを投げる。懐中電灯は動かさない。 /担当・りさちゃん
  2. 懐中電灯をゆっくり動かしたとき懐中電灯に向かって進む。/ 担当・杉G
  3. 懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めればブロックを投げる。/ 担当・もっちゃん

ロボ作成過程

  1. まずヒントで示されたものを作ってみた。しかし、カリカリと音をたてて空回りすることがある。そこでどこが空回りするのか探してみた。
Image124.jpg

2.次に改良を加えたのが前輪である。

Image121.jpg

3.投げる機構

Image119.jpg

4.ディファレンシャルギアのベースと本体、投げる機構を組み合わせるて一応のロボが完成したかに思えた。しかし、投げたときの反動が大きかったことと、本体を縦につけたため固定性がなかったことが原因で写真のように本体がのけぞってしまう。

Image118.jpg
Image117.jpg

5.見た目の工夫もしてみようと思った。

Image112~00.jpg

プログラム

課題1 全方向から懐中電灯の方向を探し出し、懐中電灯にブロックを投げる。担当:りさちゃん

#define THRESHOLD 60   //閾値
task main()
{
 SetSensor(SENSOR_1,SENSOR_LIGHT);  //SENSOR1が光センサであると宣言
 SetSensor(SENSOR_3,SENSOR_LIGHT);   //SENSOR2が光センサであると宣言
 
 while(true){
   if((SENSOR_1>THRESHOLD)||(SENSOR_3>THRESHOLD)){ //懐中電灯を見つけたら
       Off(OUT_A);                   ブロックを投げる
       OnFwd(OUT_B);
       Wait(50); 
       Off(OUT_B);

   }else{           //旋回する
       OnFwd(OUT_A);
       Wait(80);
   }
  }             
}

 

課題2 光を見つけて愚直にGO//製作杉G

sub turn_left ()
 {
 OnFwd(OUT_B);
 Wait(10);
 }
sub turn_right()
 {
 OnRev(OUT_B);
 Wait(10);
 }
#define THRESHORD 40
sub go()//まっすぐ動かすためかなり無理矢理
 {よってギザギザ走行
 repeat(50){
 OnFwd(OUT_B);
 Wait(3);
 OnRev(OUT_B);
 Wait(3);
 OnFwd(OUT_B);
 Wait(3);
 OnRev(OUT_B);
 Wait(3);
  }
 }
task main()
{
  SetSensor(SENSOR_1,SENSOR_LIGHT);//センサー1は光センサーであると宣言
  SetSensor(SENSOR_3,SENSOR_LIGHT);//センサ−3は以下略
  while(true)
  {
  if(SENSOR_1>=THRESHORD&&SENSOR_3>=THRESHORD&&SENSOR_1>SENSOR_3) {
       turn_left() ;
       }//センサー1と3が基準以上で、1の方が3より強いとき
  if(SENSOR_1>=THRESHORD&&SENSOR_3>=THRESHORD&&SENSOR_1<SENSOR_3){
       turn_right()  ;
       }//センサー1と3が基準以上で、3の方が1より強いとき
  if(SENSOR_1<THRESHORD&&SENSOR_3>THRESHORD){
       turn_right() ;
       }//センサー1が基準より下で、3が基準より上のとき
  if(SENSOR_1>THRESHORD&&SENSOR_3<THRESHORD){
       turn_left ();
       }//センサー1が基準より上、3が基準より下のとき
  if(SENSOR_1<=THRESHORD&&SENSOR_3<=THRESHORD&&SENSOR_1<SENSOR_3){
       turn_right() ;
       }//センサー1と3が基準以下で、3の方が1より強いとき
  if(SENSOR_1<=THRESHORD&&SENSOR_3<=THRESHORD&&SENSOR_1>SENSOR_3){
       turn_left() ;
       }//センサー1と3が基準以下で、1の方が3より強いとき
  if(SENSOR_1>=60&&SENSOR_3>=60){
  Off(OUT_B);
      }//センサー1と3が強く光を感知したとき
  if(SENSOR_1=SENSOR_2){
  go();
     }//とりあえず、両方のセンサーが同じ強さを感知したとき
    }
 

懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めればブロックを投げる。/ 担当・もっちゃん

#define AROUND_TIME 225          //一周にかかる時間                  
int light_max=0;
int time_max=0;
int i;                //forループのためにおいた変数
int i_min=0,i_max=5        //iの最小値と最大値を指定
sub throw()             //投げる機構を動かすサブルーチン
{
OnFwd(OUT_A);Wait(045);Off(OUT_A);
}


task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサ−1が光センサーであると宣言
SetSensor(SENSOR_3,SENSOR_LIGHT); //センサ−3が光センサーであると宣言
ClearTimer(0);            //タイマーを0にする
OnFwd(OUT_B);           //左回りに動き出す           
while(FastTimer(0)<AROUND_TIME) //タイマーが一周する時間より小さいとき
{
if(SENSOR_1>light)         
{
light_max=SENSOR_1;      //最も強い光を探す
time_max=FastTimer(0);     //最も強い光を見つけるまでにかかった時間をFastTimer(0)に記憶させる
}
}

OnFwd(OUT_B);          //この動作で最も強い光を方向を向いているはずである
Wait(time);

for(i=I_min; i <i_max;)      //iが1から5の間のとき繰り返す
{
if((SENSOR_1>SENSOR_3)&&(SENSOR_1>50)) //サンサー1がセンサー3より大きく、50以上のとき
{
OnRev(OUT_B);Wait(030);Off(OUT_B);  //右回りに動く 
}
if((SENSOR_1<SENSOR_3)&&(SENSOR_3>50)) //センサー3がサンサー1より大きく、50以上のとき
{
OnFwd(OUT_B);Wait(030);Off(OUT_B);  //左周りに動く
}
if((SENSOR_1>50)&&(SENSOR_3>50)) //サンサー1、センサー3ともに50以上のとき
{
OnRev(OUT_B);Wait(020);Off(OUT_B); //左右に動きながら全身する
OnFwd(OUT_B);Wait(020);Off(OUT_B);
i++;                //そのときにiを1増やす
}

if((SENSOR_1<30)&&(SENSOR_3<30)) //サンサー1、センサー3ともに30以下のとき
{
while(FastTimer(0)<AROUND_TIME)  //再び一周して最も明るいところを探し、
{                  そのときかかった時間を記憶する
if(SENSOR_1>light)
{
light_max=SENSOR_1;
time_max=FastTimer(0);
}
}

Off(OUT_B);           //forループが終了したらモーターを止める

throw()             //投げる


}
  1. プログラムの説明

遺恨

感想



添付ファイル: fileImage124.jpg 293件 [詳細] fileImage123.jpg 302件 [詳細] fileImage122.jpg 136件 [詳細] fileImage121.jpg 268件 [詳細] fileImage120.jpg 303件 [詳細] fileImage119.jpg 272件 [詳細] fileImage118.jpg 273件 [詳細] fileImage117.jpg 289件 [詳細] fileImage116.jpg 278件 [詳細] fileImage115.jpg 277件 [詳細] fileImage114.jpg 265件 [詳細] fileImage113.jpg 287件 [詳細] fileImage112~00.jpg 305件 [詳細] fileImage111~00.jpg 280件 [詳細] fileImage110~00.jpg 128件 [詳細] fileImage109~00.jpg 253件 [詳細]

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