目次 #contents *課題 黒い線をトレースするプログラム [#y4bccc89] **ロボットの構造の工夫 [#ufd8c21e] このロボットの雛形は、マインドストームの四輪駆動型ロボットです。 ・黒線を太くすることで、センサーの感度を実質的に引き上げました。 ・また、前輪と後輪を入れ替えることで機動力を得ます。 ・両端にある光センサーの幅を狭くすることで、左右にぶれることを少なくしました。 **ロボットの基本的なプログラム [#t078adcd] ・光センサーを利用してライントレースのプログラムを書く。 ・タッチセンサーを利用した牛乳パックの回避。牛乳パックを運ぶためのプログラムを作る。 ・完成。 **それぞれのプログラム [#ob93befe] ***これがハるのプログラムです。 [#q46756d2] #define THRESHOLD 40 #define RUN_TIME 1800 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); ClearTimer(0); まず、ちゃんと三周で止まるように、起動時間を三分に設定しました。 while(Timer(0)<=RUN_TIME){ if(SENSOR_1>THRESHOLD){ if(SENSOR_3>THRESHOLD){ OnFwd(OUT_A+OUT_C); } else{ OnFwd(OUT_A); Off(OUT_C); } } else{ if(SENSOR_3>THRESHOLD){ OnFwd(OUT_C); Off(OUT_A); } } ここまでは、ライントレースのプログラム。 if (SENSOR_2 == 1) { OnRev(OUT_A+OUT_C); Wait(50); Off(OUT_A+OUT_C); OnRev(OUT_B); Wait(50); Off(OUT_B); OnFwd(OUT_A+OUT_C); Wait(300); Off(OUT_A+OUT_C); OnFwd(OUT_A); OnRev(OUT_C); Wait(250); Off(OUT_A+OUT_C); OnFwd(OUT_B); Wait(50); Off(OUT_B); OnFwd(OUT_A); OnRev(OUT_C); Wait(250); } } Off(OUT_A+OUT_C); } 最後に、牛乳パックを感知>ホールド>進んでから反転>パージして復帰 このプログラムを付け加え、完了です。 ***これがカヲルのプログラムです。 [#q848c14c] #define THRESHOLD 40 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); while(true){ if(SENSOR_1>THRESHOLD){ if(SENSOR_3>THRESHOLD){ OnFwd(OUT_A+OUT_C); } else{ OnFwd(OUT_A); Off(OUT_C); } } else{ if(SENSOR_3>THRESHOLD){ OnFwd(OUT_C); Off(OUT_A); } } if (SENSOR_2 == 1) { OnFwd(OUT_A+OUT_B); Wait(100); OnRev(OUT_A); OnFwd(OUT_C); Wait(800); } } } **感想 [#h9aa55d6] ***ハる [#od7fa6db] 家に持って帰ったのは今回が初めてでした。牛乳パックをホールドするアームの設計は、かなり考えた末に現在のような形になりました。 また、集会を記録するプログラミングは、変数を記録するプログラムがまだわからなかったので断念し、タイマーを利用することになりました。 今回、NQCを自分のパソコンでも使えるようになったので、今後の課題はもっと楽になると思います。 ***カヲル [#yd028789] #comment