*ロボ紹介 [#x239d9c6] 前方にアーム、タッチセンサ、赤外線センサを取り付け、タッチセンサが押されると開いた状態のアームが閉じる仕組みのロボット。 形は授業始めの時に作った物とあまり変わらないけれど、タッチセンサの取り付け位置のせいで車体は少し高めです。 **工夫 [#h2c73345] アーム部分にゴムタイヤを用いて缶をがっちりホールド出来るようにしました。 また、パーツを取り付け易くする為、マインドストームの心臓部であるあの機械を地面と平行になるようにし、アーム、タッチセンサ、赤外線センサの3つがコンパクトにまとまるよう配慮しました。 **余談 [#xefca11d] 一番初めに作ったロボットは見た目と形が完璧で、かなりスッキリしたデザインだったけれど、赤外線センサの位置が車体の中心過ぎて反応せず、解体を余儀なくされてしまった。 *コース攻略法 [#h9ee5d91] 周回することは出来るのですが、スタートとゴールを判断できずに回り続けてしまい、攻略できませんでした。 *プログラム [#i692e465] #define OnRL(speedR,speedL) OnFwd(OUT_A,speedR);OnFwd(OUT_C,speedL); #define TL OnRL(50,-20); #define TR OnRL(-20,50); #define TIME 540 task main() { SetSensorLight(S1); SetSensorTouch(S2); long t0,time; while(true){ if(SENSOR_1>45){ TR; if(SENSOR_2==1){ OnFwd(OUT_B,20); } }else{ t0=CurrentTick(); do{ time=CurrentTick()-t0; TL; } while(time<TIME); if(time>=TIME); do{ TR; Wait(20); } while(SENSOR_1<=45); time=(0); } } } **プログラム説明 [#r0e81812] 最初に、右旋回と左旋回を定義し、待機時間を0.54秒と定義しました。 また、赤外線センサをS1、タッチセンサをS2と定義しました。 更に、時間を計るためにt0とtimeという変数を定義しました。 赤外線センサが45以上の数値なら右旋回、そうでなければタイマーを作動させながら左旋回させます。 一方、タイマーが一定時間経っても左旋回していれば右旋回させます。 また、タッチセンサが押されればアームを閉じます。 しきい値を設定していない為、終始ジグザグしながら周回します。 *感想 [#u62c918f] 想像以上に難易度が高く、プログラミングが殆ど出来ない自分にとってはかなり辛かったです。 また、それゆえ相方にも迷惑をかけてしまい、本当に申し訳なく思いました。 コース走破した人を本当に尊敬します。 *まとめ・反省 [#w0e65a17] ロボットの組立自体に問題は無っかたものの、自身のプログラミング能力に問題があり、交差点は突破出来たのですが、スタートとゴールは攻略出来ず終いになってしまいました。 また、交差点、アーム動作に関しても誤作動が偶にあり、とても出来のいいプログラミングとは言えない結果に終わってしまいました。 課題2では自身のプログラミングの精度を上げると共に問題解決能力の向上や発想力を磨きたいです。