- 追加された行はこの色です。
- 削除された行はこの色です。
[[2007a/MemberOnly/進行状況A]] ~
CENTER:&ref(2007a/A5/課題3左/Scorpion.jpg,40%,全体); ~
#contents
*課題3 [#w700887d] 光を追う+ブロックを投げる
1.全方向から懐中電灯の方向を探しだし、懐中電灯に向けてブロックを投げる。懐中電灯は動かさない。
2.懐中電灯をゆっくり動かしたとき懐中電灯に向かって進む。
3.懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めればブロックを投げる。
ただし、モータ、光センサ、タッチセンサはそれぞれ2個まで使用可。懐中電灯の代わりに携帯のライトなどを利用してもよい。
*ロボット SCORPION[#e90bbbc3]
名前の由来→ロボットの形を見てください!!(^^)
&ref(2007a/A5/課題3左/200707051901000.jpg,50%,全体);
**苦労した点 [#rd5a3925]
とにかくブロックを投げるところが上手くいかなかったです。
相方が一生懸命ロボットを作ってくれていました...
試作1号として、パチンコみたいな形を作成!!
→どうストッパー(ブロックを落ちないようにするため)を設置するのか,引っ張った状態でどう固定するのか,さらにこんな大きいものをどこにつけるのか!?という様々な問題が発生したのでNG
&ref(2007a/A5/課題3左/robo.jpg,100%,投げる所その1);
結局シンプルISベストということで、こんな形になりました。
&ref(2007a/A5/課題3左/NEC_0064.jpg,25%,投げる所その2);
また、今回モーターを2個しか使えないということなので、ディファレンシャルギアを駆使してモーター1つでどうにか動かすことに挑戦しました。
いざ走らせてみるとここでも問題が発生!!
4輪にするとうまくまわらないので、3輪にしました。ですが、後ろにあるタイヤの強度に大きな問題が…
なので、かなり小さめの車輪を勝手に作り出し設置→安定して走るようになりました!
**工夫した点 [#mf4f8ff6]
タイヤを飛ばすためのアームの強度があまりにも弱く、全然飛んでいかなかったので、小さいブロックを1つ付けてより勢いがつくようにしました。
&ref(2007a/A5/課題3左/NEC_0063.jpg,25%,投げる所工夫);
*プログラミング [#b566222e]
今回は相方が大活躍!!その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);
Off(OUT_A);
OnRev(OUT_C);
Wait(150);
OnFwd(OUT_C);
Wait(150);
Off(OUT_C);
Wait(300);
}
}
}
*反省点 [#z1d21769]
今回の課題は今までよりも数段レベルが高く、かなり焦りました。
相方に何もかもお世話になってしまい、本当に申し訳ないと心底反省しています。
*COMMENTS [#b55e24ae]
コメントをよろしくお願いします('人')
-プログラムの解説、コメント等をつけてください。 -- [[まいける(TA)]] &new{2007-07-11 (水) 00:06:28};
-工夫した点の、小さいブロックを1つつけたというのが、どれのことかよくわかりません。 -- [[まいける(TA)]] &new{2007-07-11 (水) 19:26:28};
-画像を加工しました。 -- [[つ]] &new{2007-07-12 (木) 17:42:38};
-プログラムその3に、投げる動作がない気がするのですが。課題では投げることが要求されています。 -- [[まいける(TA)]] &new{2007-07-14 (土) 14:17:24};
-「タイマーをクリアする」以降でその動作をしているのでしょうか? -- [[まいける(TA)]] &new{2007-07-14 (土) 14:21:36};
#comment