[[2005/A1]] #contents *光を追いかけるロボット [#ffbb569c] **はじめに [#bddca110] 私には難しすぎたため、同じA1の原田君にプログラム製作を指導していだきました。ほとんど同じです、すみませんm(__)m **プログラム [#nd401271] //製作者 そるとと 高尾 //指導 harada #define freq 10 //センサ測定頻度 #define kaiten 25 //一周に必要な測定回数 int hikari: int koutai; sub zenshin(){OnFwd(OUT_A+OUT_C);Wait(200);Off(OUT_A+OUT_C);} //前進するサブルーチン sub sagasu() //光源の方向を探すサブルーチン { SetSensor(SENSOR_1, SENSOR_LIGHT); //センサー1を光センサーと定義 int w; //変数w(測定頻度)を定義 w=freq; //測定頻度をwに代入 int bmax; //変数bmax(明るさの最大値)を定義 bmax=0; //bmaxを初期化 int cn; //変数cn(測定回数)を定義 int hikari; //変数hikari(光源がある測定回数)を定義 for (cn=1; cn<=kaiten; cn++) //cnを25まで増やす { OnFwd(OUT_A); OnRev(OUT_C); Wait(w);Off(OUT_A+OUT_C); //w/100秒間回転 if (bmax <= SENSOR_1 ) //前の場所より明るかったら↓ { bmax = SENSOR_1; //明るさの最大値を更新 hikari=cn; //光源のあると思われる測定回数を記録 PlayTone(220,50); //明るさの最大値が更新された場合に『ド』を鳴らす } else{PlayTone(262,50); //明るさの最大値が更新されない場合に『ミ』を鳴らす } } koutai=kaiten-hikari; //光源までの回転数を計算する if(back <= kaiten/2 ) { repeat(koutai) //光源の方向を向く { OnFwd(OUT_C); OnRev(OUT_A); Wait(w); Off(OUT_A+OUT_C); Wait(60); } } else { repeat(hikari) { OnFwd(OUT_A); OnRev(OUT_C); Wait(w); Off(OUT_A+OUT_C); Wait(60); } } } task main() { while(true) { sagasu(); zenshin(); } } **感想 [#k7ee5ce9] 難しい。わけがわからない。結局教えてもらってもいまいち理解できませんでした(涙)。原田君ありがとうm(__)m