1.全方向から懐中電灯の方向を探しだし、懐中電灯に向けてブロックを投げる。懐中電灯は動かさない。
2.懐中電灯をゆっくり動かしたとき懐中電灯に向かって進む。
3.懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めればブロックを投げる。
ただし、モータ、光センサ、タッチセンサはそれぞれ2個まで使用可。懐中電灯の代わりに携帯のライトなどを利用してもよい。
名前の由来→ロボットの形を見てください!!(^^)
とにかくブロックを投げるところが上手くいかなかったです。 相方が一生懸命ロボットを作ってくれていました...
試作1号として、パチンコみたいな形を作成!!
→どうストッパー(ブロックを落ちないようにするため)を設置するのか,引っ張った状態でどう固定するのか,さらにこんな大きいものをどこにつけるのか!?という様々な問題が発生したのでNG
結局シンプルISベストということで、こんな形になりました。
また、今回モーターを2個しか使えないということなので、ディファレンシャルギアを駆使してモーター1つでどうにか動かすことに挑戦しました。
いざ走らせてみるとここでも問題が発生!!
4輪にするとうまくまわらないので、3輪にしました。ですが、後ろにあるタイヤの強度に大きな問題が…
なので、かなり小さめの車輪を勝手に作り出し設置→安定して走るようになりました!
タイヤを飛ばすためのアームの強度があまりにも弱く、全然飛んでいかなかったので、小さいブロックを1つ付けてより勢いがつくようにしました。
今回は相方が大活躍!!その1を基本ベースとしてその2,3へと応用していきました。
その1 担当ち,つ
#define THRESHOLD 48 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT);//センサー1を光センサーと定義 SetSensor(SENSOR_3,SENSOR_LIGHT);//センサー3を光センサーと定義 SetPower(OUT_A+OUT_C,7);//AとCのモーターの出力を7にする while(true { if((SENSOR_1<THRESHOLD)&&(SENSOR_3<THRESHOLD)))//センサー1と3が受ける光が閾値より弱ければ { OnFwd(OUT_A);//時計回りに回転 } else { Off(OUT_A);//両方とも受ける光が閾値より強くなったらブロックを投げる OnRev(OUT_C); Wait(150); OnFwd(OUT_C); Wait(150); Off(OUT_C); Wait(300); } } }
#define THRESHOLD 48 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT);//センサー1を光センサーと定義 SetSensor(SENSOR_3,SENSOR_LIGHT);//センサー3を光センサーと定義 while(true){ if(SENSOR_1>THRESHOLD) {//センサーの受ける光が閾値より弱かった時 OnRev(OUT_A)//時計回り }else{ OnRev(OUT_C);//ブロックを投げる Wait(150); OnFwd(OUT_C); Wait(150); Off(OUT_C); Wait(300); } } }
その2 担当 ち,つ
#define THRESHOLD 45 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT);//センサーを定義 SetSensor(SENSOR_3,SENSOR_LIGHT); SetPower(OUT_A+OUT_C,7);//AとCのモーターの出力を7にする while(true) { if((SENSOR_1<THRESHOLD)&&(SENSOR_3<THRESHOLD)))//センサー1と3が受ける光が閾値より弱ければ { OnFwd(OUT_A);//時計回り } else { OnRev(OUT_A);//前進 } } }
#define THRESHOLD 48 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT);//センサーを定義 SetSensor(SENSOR_3,SENSOR_LIGHT); while(true){ if(SENSOR_1>THRESHOLD) {//センサー1が受ける光が閾値より大きければ OnRev(OUT_A);//前進 }else{//小さければ OnFwd(OUT_A);//時計回り } } }
その3 担当 ち
#define THRESHOLD 48 #define XDAY 30////XDAYを3秒に定義する task main() { SetSensor(SENSOR_1,SENSOR_LIGHT);//センサーを定義 SetSensor(SENSOR_3,SENSOR_LIGHT); SetPower(OUT_A+OUT_C,7);//AとCのモーターの出力を7にする while(true) { if((SENSOR_1<THRESHOLD)&&(SENSOR_3<THRESHOLD))//センサー1と3の受ける光が閾値より小さかった時 { OnFwd(OUT_A);//時計回り } else { ClearTimer(0);//タイマーをクリアする OnRev(OUT_A); until( Timer(0) >= XDAY);//XDAY(3秒)よりタイマーが大きくなるまで Off(OUT_A);//反時計回り OnRev(OUT_C);//ブロックを投げる Wait(150); OnFwd(OUT_C); Wait(150); Off(OUT_C); Wait(300); } } }
今回の課題は今までよりも数段レベルが高く、かなり焦りました。
相方に何もかもお世話になってしまい、本当に申し訳ないと心底反省しています。
コメントをよろしくお願いします('人')