[[2008b]]
#contents

*目的 [#t83d66c2]
インストの「top secret」を参考にして、白いホイールを投げるロボットを作成し、以下の動きをするようにプログラムを作成せよ。 (重複しないように一人一つ以上のプログラムを作成すること)
インストの「top secret」を参考にして、白いホイールを投げるロボットを作成し、~
以下の動きをするようにプログラムを作成せよ。 ~
(重複しないように一人一つ以上のプログラムを作成すること)~

   1. 全方向から懐中電灯の方向を探しだし、懐中電灯の手前50cmまで進んで懐中電灯を狙ってブロックを投げる。懐中電灯は動かさない。
   2. 懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めれば50cmの距離まで近づいて懐中電灯を狙ってブロックを投げる。



*マシン [#jcb36dbd]
*前に二つのタイヤ、後ろにキャスターを付け、一つのギアで前進&回転するようにした。


全体図:~
&ref(090121_223719.jpg);


ギア部分:~
&ref(090121_223904.jpg);


投擲部分:~
&ref(090121_223802.jpg);


後ろキャスター:~
&ref(090121_223840.jpg);


*プログラム [#ld3bf57b]

動作確認を


***動く明かりを追いかけ、停止したら投げるプログラム [#mfd6631e]

 #define SHOOT OnFwd(OUT_A);Wait(10);Off(OUT_A); //ホイールを投げる
 #define THRESHOLD 40 //閾値
 int count_up;

 void GO(int t)//前進用
 {
 OnFwd(OUT_B);
 Wait(t);
 Off(OUT_B);
 } 

 void TURN(int t)//回転用
 {
 OnRev(OUT_B);
 Wait(t);
 Off(OUT_B);
 } 


 task main ()
 {
 SetSensor(SENSOR_1,SENSOR_LIGHT);//ライトセンサ:右
 SetSensor(SENSOR_3,SENSOR_LIGHT);//ライトセンサ:左
 SetPower(OUT_A,1);
 count_up = 0;
 
 while(1){

 if ((SENSOR_1 < THRESHOLD)&&(SENSOR_3 < THRESHOLD))//右も左も明かりを関知しない場合
 {
 count_up = 0;
 TURN(5);
 Wait(20);
 }           //前進する

 if((SENSOR_1 > THRESHOLD)&&(SENSOR_3 < THRESHOLD)&&(count_up==0))//明かりを関知し、かつカウントをしていない時
         {
         count_up = count_up + 1;
         Wait(100);
         }//カウントを入れ、明かりが動くか待つ
         if((SENSOR_1 < THRESHOLD)&&(SENSOR_3 > THRESHOLD)&&(count_up==1))//明かりを関知し、かつカウントが入っているとき
         {
         Off(OUT_B);
         SHOOT
         } //止まって投げる
 }
 }

*感想/反省 [#r7e4579c]

・作業時間があまりとれず、とても難しかった。~


*コメントをどうぞ [#d12d711f]
#comment


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