目次
分解し組み直すことでできなかったため、初期を基本に組み上げた。
このようにベースが最初のロボットである。
. .
アーム部分はボールが零れないようにレゴを使い固定した。 また、ボールを押し出す際に押し出せるようにアーム内部にレゴを組み込んだ。(写真はうまく撮ることができなかった)この部分を用いることでボールを押し出し、ゴールを決めることに成功した。
そして、側面はこのようになっている。
.
.
全体として、小型化に失敗してしまったが、初期のものより多少は小さくなっていると思う。
※先生のページのコピーです。
図のようなコースを各自で作成した上で、次のような動作をするロボットを作成せよ。
交差点の数を数え、ある回数でシュートするプログラム。 そして交差点を通過するためのプログラムを作るべきと感じたが、作成することができなかった。そのため時間指定により動くロボットを作った。 黒い線の右を通るか、左を通るかを切り替えることで交差点に悩まないようにした。
上に書いたようなプログラムを作ろうとしたが失敗したため、時間指定により動くプログラムを作った。
そして、ゴール前まで運ぶと
という動きに切り替わる。
この動きを説明すると
#define right01 OnFwd(OUT_C,40);OnRev(OUT_B,20);//右に前進 #define left01 OnFwd(OUT_B,40);OnRev(OUT_C,20);//左に前進 #define THRESHOLD 45//閾値を設定 #define STEP 10//一回の判定で動く時間 #define left00 OnFwd(OUT_B,30);OnFwd(OUT_C,-30);Wait(1200);//ボール回収時の左折 #define mae00 OnFwd(OUT_BC,20);Wait(600);//ボール回収時の前進 #define right00 OnFwd(OUT_C,30);OnFwd(OUT_B,-30);Wait(400);//ボール回収時の右折 #define short_break00 Off(OUT_BC); Wait(1000);//一時停止 #define mae01 OnFwd(OUT_BC,20);Wait(400);//ボール回収時の前進 #define short_break01 Off(OUT_BC); Wait(500);//発射時の一時停止 task main() { /*ボールを回収するプログラム*/ left00; mae00; short_break00; OnFwd(OUT_A,20);Wait(300);Off(OUT_A); mae01; right00; SetSensorLight(S3);//光センサーを起動 short_break01 /*タイマーをセットし起動*/ long time1,timeA; /*タイマーの初期化*/ time1 = 0; timeA = 0; time1 = CurrentTick(); /*指定時間の間黒線上なら左、白線上なら右へ曲がるプログラムで移動*/ while(5000 >= timeA) { //5秒間繰り返す timeA = CurrentTick()-time1; if(SENSOR_3 < THRESHOLD) { left01; }else { right01; } Wait(STEP); } /*ここで黒線上なら右、白線上なら左へ曲がるプログラムに切り替える*/ short_break01 OnFwd(OUT_C,30);Wait(300);//切り替えが失敗しないようにプログラムの切り替え前に右側に振り切る long time2,timeB; //二つ目のタイマーを作成 /*タイマーの初期化*/ time2 = 0; timeB = 0; time2 = CurrentTick(); //タイマーを起動 while(9000 >= timeB) { //9秒間繰り返す timeB = CurrentTick()-time2; if(SENSOR_3 < THRESHOLD) { right01; }else { left01; } Wait(STEP); } /*ここで再び最初のプログラムに切り替える*/ short_break01; OnFwd(OUT_B,30);Wait(300); //切り替えが失敗しないように左に振り切る long time3,timeC; //三つ目のタイマーを作成 /*タイマーの初期化*/ time3 = 0; timeC = 0; time3 = CurrentTick(); //タイマーを起動 while(26000 >= timeC) { //26秒間繰り返す timeC = CurrentTick()-time3; if(SENSOR_3 < THRESHOLD) { left01; }else { right01; } Wait(STEP); } /*ゴールをするためのプログラム*/ short_break01; right00; Off(OUT_BC);Wait(600);//ここでボールのゆれをとめる OnFwd(OUT_A,-30);Wait(500);Off(OUT_A); OnFwd(OUT_BC,100);Wait(300);Off(OUT_BC); OnFwd(OUT_BC,-100);Wait(400);Off(OUT_BC); }
ロボットに関する知識も、プログラムに関する知識も足りないと痛感した。 期末までにはこの2つの知識をなんとしても得ることで、満足のいくものを創りあげたい。 また、自分の動かしたいもの、作りたいもの、イメージしていたものとの違いをとても感じている。この違いをなくせるようにしていきたいと思う。 そして、過去の先輩やネットから多くの情報を得られるので、それをコピーし、動かすことで知識を自分のものにしていきたい。