インストの「top secret」を参考にして、ブロック(一番太いホイール)を投げるロボットを作成し、以下の動きをするようにプログラムを作成せよ。 (重複しないように一人一つ以上のプログラムを作成すること)
1. 全方向から懐中電灯の方向を探しだし、懐中電灯に向けてブロックを投げる。懐中電灯は動かさない。 2. 懐中電灯をゆっくり動かしたとき懐中電灯に向かって進む。 3. 懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めればブロックを投げる。
ただし、モータ、光センサ、タッチセンサはそれぞれ2個まで使用可。懐中電灯の代わりに携帯のライトなどを利用してもよい。
(期限:1月9日午後6時)
担当者:桑名
#define THRESHOLD 55 // 閾値の設定 task main () { SetSensor(SENSOR_1,SENSOR_LIGHT); // センサー1:光センサー SetSensor(SENSOR_3,SENSOR_LIGHT); // センサー3:光センサー while(true){ if(SENSOR_1 > THRESHOLD){ if(SENSOR_3 > THRESHOLD){ Off(OUT_A); // センサー1とセンサー2のどちらも明るいと Wait(50); // 判断すると停止 OnRev(OUT_C); // バットを奥まで戻す Wait(10); Off(OUT_C); OnFwd(OUT_C); // バットを振ってホイールを飛ばす Wait(45); Off(OUT_C); } else { OnFwd(OUT_A); // センサー3が反応するとその方向に回転 } } else { if(SENSOR_3 > THRESHOLD){ OnRev(OUT_A); // センサー1が反応するとその方向に回転 } else { OnFwd(OUT_A); // どちらのセンサーも感知していない時は回り続ける } } } }
担当 北田
task main(){ SetSensor(SENSOR_1, SENSOR_LIGHT);//右側光センサー SetSensor(SENSOR_3, SENSOR_LIGHT);//左側光センサー while(1){ if(SENSOR_1<=35&&SENSOR_3<=35){//懐中電灯の光が当てられてないとき Off(OUT_A);//止まっている } else if(-15<=SENSOR_1-SENSOR_3&&SENSOR_1-SENSOR_3<=15){//懐中電灯の光が正面のとき OnFwd(OUT_A);//直進 Wait(40); OnRev(OUT_A); Wait(40); Off(OUT_A); } else if(SENSOR_1-SENSOR_3>15){//右のほうが明るい時 OnFwd(OUT_A);//右に進む Wait(40); Off(OUT_A); } else{//左のほうが明るい時 OnRev(OUT_A);//左に進む Wait(40); Off(OUT_A); } } }
担当 北田
task main(){ int i=0; SetSensor(SENSOR_1, SENSOR_LIGHT);//右側光センサー SetSensor(SENSOR_3, SENSOR_LIGHT);//左側光センサー while(1){ if(SENSOR_1<=35&&SENSOR_3<=35){//懐中電灯の光が当てられてないとき Off(OUT_A);//止まっている } else if(-15<=SENSOR_1-SENSOR_3&&SENSOR_1-SENSOR_3<=15){//懐中電灯の光が正面のとき i++; if(i>2){//かつしばらく待っても光が動かないとき(iが2になったとき) OnRev(OUT_B);//ブロックを発射する Wait(100); Off(OUT_B); i=0; } } else if(SENSOR_1-SENSOR_3>15){//右のほうが明るい時 OnFwd(OUT_A);//右に進む Wait(40); Off(OUT_A); } else{//左のほうが明るい時 OnRev(OUT_A);//左に進む Wait(40); Off(OUT_A); } } }
カタカタ音が鳴ってきちんと動かない事があり、デファレンシャルギアを用いた駆動部の製作には苦労した。
ホイールの投げ方はバットで打ち出す形にした。これに依ってきちんと前方にそして比較的長距離飛ばせるようになった。
桑名:ロボットとプログラム共に問題が沢山あって大変だったが、満足出来る所まで行けたのは良かった。 北田:ギアの構造を理解することができた。
よろしければコメントお願いします。