[[2006b/A6/L Room]] #contents *課題3 光を追いかけるロボット[#lb25a669] 懐中電灯などの光源を用意する。まず明るさに比例した周波数の音を出しながら全方角の中から光源のある方角を探し、探した後は、光源の光を追いかけて進むロボットを作成 *ロボット [#qd848e4e] #ref(2006b/A6/L Room/06-12-22_16-23.jpg,65%,あおP-Z 外観) **工夫した点 [#m510eb38] 前輪の直径を後輪のより大きくしたことで、前につんのめらないようにした。これにより、多少高いところから光を照射してもしっかり光を捉えられるようにした。~ センサーを前方に突き出して、光を捉えやすいようにした。~ #ref(2006b/A6/課題3左/06-12-22_16-28.jpg,50%,あおP-Z センサー) 外観デザインにこだわった。愛くるしい(?)目が特徴!無駄なものと言えばそのとおりです...~ #ref(2006b/A6/課題3左/06-12-22_16-24.jpg,50%,あおP-Z め) **苦労した点 [#mb6e10ea] 基本的な形は前回の課題のものをそのまま引き継いだのだが、光センサーを1つにするか2つにするかで悩んだ。結局1つでいくことにした。~ *プログラム [#f99b2b13] #define turn_time 420 task play_music() { SetSensor(SENSOR_1,SENSOR_LIGHT); //光センサーを設置 while (true) { PlayTone(10*SENSOR_1,10);Wait(7); //センサー1の値の10倍の周波数の音を奏でる } } task main() { while(true) { int light_max=0,time_max; //明るさの最大値と時間を変数で定義 ClearTimer(0); OnFwd(OUT_A);OnRev(OUT_C); //その場で回転し、光源の方向を確認 start play_music; while(FastTimer(0)<turn_time) { if(SENSOR_1>light_max) { light_max=SENSOR_1; time_max=FastTimer(0); //回転し始めた地点から光源確認までの時間(*)を計る } } OnRev(OUT_A);OnFwd(OUT_C); Wait(turn_time - time_max); //1回転の時間から(*)の時間を引いた分逆回転する⇒光源の方向を向く stop play_music; OnFwd(OUT_A+OUT_C); Wait(300); //光源の方向へ走る } } **苦労した点 [#xcb0d2f5] 松本先生が最初に提示して下さったヒントのプログラムの意味を理解するだけでだいぶ時間がかかってしまった。~ **工夫した点 [#z9a02512] 音そのものにはあまりこだわらず、全体的にすっきりしたプログラムになるようにした。~ **反省・感想 [#u66dd822] 『明るさに比例した周波数の音』をどのように発生させるかということに見当もつかず、最終的には他のチームの考えをかなり参考にさせていただいた。~ 今回の課題は年末に出され、提出期限が年明け早々だったので、実験する時間がなくめちゃめちゃキツかった・・・(´δ`;)~ 毎回思うことだが、課題は早めに取り組んだ方がいいと思う。。。 **リンク [#e768998a] **意見など、こちらにお願い致します [#haed9116] - -光源を移動してもロボットが追従してくるようにプログラムを改良しましょう。 -- [[松本(教員)]] &new{2007-01-09 (火) 13:49:50}; #comment