[[2010a]] *目次 [#n2b815a6] #contents *1、[課題3]の内容 [#e3a909ca] 黄色いホイールを2個以上連射するロボットを作成し、以下の動きをするようにプログラムを作成せよ。ただし1,3は懐中電灯を2個使用し、ロボットの動作中は懐中電灯を動かさないがいろいろな距離や方向にある懐中電灯に対応できるロボットにすること。2は懐中電灯を1個使用し懐中電灯をゆっくり動かす。 (重複しないように一人一つ以上のプログラムを作成すること。2人のチームは1と2、3人のチームは1〜3) 1. 全方向から2つの懐中電灯の方向を探しだし、懐中電灯を狙ってホイールを投げる。可能な限り正確な方向に投げること。&br; 2. 懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めれば一定の距離(懐中電灯から30cm以上離れた距離)まで近づいて懐中電灯を狙ってブロックを投げる。&br; 3. 全方向から2つの懐中電灯の方向を探しだし、40cmの距離に近づいて懐中電灯を狙ってホイールを投げ、懐中電灯に当てる。&br; 懐中電灯の代わりに携帯のライトなどを利用してもよい。 *2、メンバー紹介 [#n6db3a8b] ・カワシマ、マコト、カズの3人でやっています。 *3、ロボット紹介 [#a63d2965] 全貌 #ref(./013.JPG,around,25%,全貌) モーターを3つと、光・センサを用いて作成しました。(龍をモチーフにしました!) #clear 正面 #ref(./022.JPG,around,25%,正面) ピンクの四角で囲った部分に光・センサが搭載されています。 #clear 真上 #ref(./016.JPG,around,25%,真上) 黄色の四角で囲った部分は、発射台です。 #clear **ロボット制作においての工夫 [#sbe2ad68] #ref(./019.JPG,around,26%,裏側を拡大) 先輩方のページを参考にして、ディファレンシャルギア(黄色の矢印部)を活用することで、ロボットが移動するのに必要なモーターの数を1つに抑えることができました。 #clear **ロボット制作においての問題点 [#hc923b97] ・モーターを3つ使用したために、ロボットの機体が重くなりディファレンシャルギアでは、移動できない状態に陥った点。&br; ・上記のことと重なるかもしれませんが、ロボットの機体における前後のバランスが前に偏ってしまった点。 **その問題点の改善策 [#r61c79b8] #ref(./018.JPG,around,25%,裏側) ・ピンクの輪で示した部分にあるように、しっぽをモチーフにした重りを取り付けたり、前方に取り付けた光・センサを1つにすることで前後のバランスを改善しました。&br; ・赤い輪で示したように前方のタイヤのゴムをあえて取り付けないことで、摩擦による抵抗を軽減しました。 #clear *4、それぞれのプログラム [#fd1634ba] **カワシマのプログラム [#h399a642] 私は、「2. 懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めれば一定の距離(懐中電灯から30cm以上離れた距離)まで近づいて懐中電灯を狙ってブロックを投げる。」という課題を選択しました。 **プログラムの工夫 [#n434a889] **プログラムの問題点、改善策 [#ue226255] **反省、感想 [#zab89523] まだ完成に至っていません。 **マコトのプログラム [#f6be9553] #define TURN_TIME 400//一周する時間 task main(){ SetSensor(SENSOR_2, SENSOR_LIGHT);//センサー2を光センサ int light_max=0;//光の最大値 int t_max=0;//光の最大値の時間 ClearTimer(0); OnFwd(OUT_B);Wait(TURN_TIME);//一周する while(FastTimer(0)<TURN_TIME){ //回っている間 if(SENSOR_1>light_max) //最大値の光を見つけたら { light_max=SENSOR_1; //最大値の光と設定 t_max=FastTimer(0); //タイマーを入れる } } OnFwd(OUT_B);//光の最大値のところまで回る Wait(t_max);// Off(OUT_B);// OnFwd(OUT_A);//左のブロックを射出 Wait(10);// Off(OUT_A);// Wait(50);// OnRev(OUT_C);//右のブロックを射出 Wait(10);// Off(OUT_C);// } **プログラムの工夫 [#i52436ef] タイマーを設定して割と正確な位置に行けるようにした **プログラムの問題点、改善策 [#gea8dac9] 最大値とかの設定がどうすればうまくいくいのかわからなかった。 **反省、感想 [#u56d2086] 時間がなくて大変だった **カズのプログラム [#j688e193] #define turn_time 400 //ロボットが1周する時間 task main() { int light_max=0; //最大値 int t_max=0; //最大値を実現する時刻 SetSensor(SENSOR_2,SENSOR_LIGHT); //センサー1は光センサー ClearTimer(0); //時間を0とする OnFwd(OUT_B); //一周する while(Timer(0)<turn_time){ if(SENSOR_2>light_max){ //回っている間 light_max=SENSOR_2; //最大値をセンサー2とする t_max=Timer(0); //タイマーを入れる } } Off(OUT_B); //一旦止めて Wait(100); OnFwd(OUT_B); //最大値のところまで回る Wait(t_max) Off(OUT_B); //止まる Wait(50); OnRev(OUT_B); //光に向かって前進 Wait(50); Off(OUT_B); OnFwd(OUT_A); //左のブロックを投げる Wait(20); Off(OUT_A); OnFwd(OUT_C); //右のブロックを投げる Wait(20); Off(OUT_C); //完了 } **プログラムの工夫 [#nb6cd543] 先輩のを参考にしました。正確になるようになるべく動く時間を考えました。 **プログラムの問題点、改善策 [#l1b9522c] 光に向かって進まなくてはならないところのプログラムと懐中電灯に当てるプログラムがあまりうまくいきませんでした。 **反省、感想 [#cee2acb8] 時間がなく、あまり正確にできなくて残念でした。&br; *5、全体の反省 [#k1adacc8] ・ロボットの作成に関しては、みんなでできる限り集まって作成したので比較的容易い作成することができました。&br; ・プログラムに関しては、なかなか時間を確保することができなかったので、少し反省しています。 *6、コメント欄 [#h26dc012] 私たちのページを見て、感じたことを自由に投稿して下さい。 #comment