懐中電灯の光を追いかけて進むロボットを製作し、以下の中から2種類以上のプログラムを作成する。光源を見失った時には曲を演奏しながらぐるっと旋回して光源を探す光源を見失った時には明るさに比例した周波数の音を出しながら旋回して光源を探す光源を見失っていないときにはある曲を演奏し、見失った時には別の曲を演奏しながら光源を探す上記のいずれかに『光源に近づき過ぎると停止する』という機能を追加するただし支給されているモータ、光センサ、タッチセンサはいくつ使ってもよい。→今回は1と3を選択しました。†まず、光の強さ(以後照度とする)が最大のところを感知して、その方向に向くプログラムについてである。これは、ロボットが一周する間に、光センサーによって、毎回照度を感知し、より大きい照度をみつけたら、そこでどんどん塗り替えていって、最終的に最大の照度のところを決める。その最大照度の値を変数として記憶する。その最大照度のところまでの回った時間を記憶して、その値も変数として記憶する。その最大照度のところへ向くために、一周の時間からその最大照度までの時間を引いただけの時間、回る。次に、最大照度のところを向いた後に、その光の後を追っていくプログラムについてである。光センサーを2つ使った。(光センサー1、2)2つの光センサーをまっすぐ前に向けて、まず最初に光の最大のところを読み取るときにセンサー1、2、1+2のそれぞれについて最大の照度を同時に読み取らせる。これによって、1+2の値が最大値になったときには、直進する。光源がロボットからみて、左に移動したとき、1の照度が、先ほど測定した最大の照度より上昇し、かつ、2の照度が最大の照度より低下しているときには、左に旋回するようにする。これは、光源が左に移動したときには、センサー1の方が強く光があたり、センサー2の方が、弱く光があたるからである。右に旋回するときには、センサー1が最大値より低く、センサー2は、最大値より高くなればよい。最後に、、光を見失ったときにまた旋回して光源を探すものである。これは、光源を見失ってから、旋回して、先ほどの最初に測った最大の照度の値のところを見つけたら、もうそこへ向かっていくものである。光を見失ってからまた一回転せずに、最大のところを見つけたらもうそこで向かって行ってしまう。これは、センサー1と2の照度がともに非常に低くなったら(具体的な照度を入力する)旋回するというものである。してから、また最大と同じ照度のところを見つけたら、そこで直進する。次に、最大照度のところを向いた後に、その光の後を追っていくプログラムについてである。光センサーを2つ使った。(光センサー1、2)2つの光センサーをまっすぐ前に向けて、まず最初に光の最大のところを読み取るときにセンサー1、2、1+2のそれぞれについて最大の照度を同時に読み取らせる。これによって、1+2の値が最大値になったときには、直進する。光源がロボットからみて、左に移動したとき、1の照度が、先ほど測定した最大の照度より上昇し、かつ、2の照度が最大の照度より低下しているときには、左に旋回するようにする。これは、光源が左に移動したときには、センサー1の方が強く光があたり、センサー2の方が、弱く光があたるからである。右に旋回するときには、センサー1が最大値より低く、センサー2は、最大値より高くなればよい。最後に、、光を見失ったときにまた旋回して光源を探すものである。これは、光源を見失ってから、旋回して、先ほどの最初に測った最大の照度の値のところを見つけたら、もうそこへ向かっていくものである。光を見失ってからまた一回転せずに、最大のところを見つけたらもうそこで向かって行ってしまう。これは、センサー1と2の照度がともに非常に低くなったら(具体的な照度を入力する)旋回するというものである。してから、また最大と同じ照度のところを見つけたら、そこで直進する。次に、音楽を流すプログラムについてである。旋回するときに流す音楽はキラキラ星で、まず、周波数をドレミごとに定義する。そのドレミをプログラムでくみ、その流れる長さも設定し、さらにその音が重ならないように、音の長さよりもWaitで長くする。mainで流していく。音楽を流すプログラムは、それを始めたら、止めるまでずっと続くプログラムである。これは、光を見失った条件のところに、音楽を流し始めるプログラムを入れ、他の直進するときや、左や右に旋回するときの条件のときには、音楽を止めるプログラムを入れる。†また、課題3についてである。こちらは、旋回するときの音楽とは別に、光についていってるときにも別の音楽を流す。このときには、課題1のときより光についていくときのプログラムを改良した。光源が、ロボットから向かって左に向かったときには、センサー1の照度の方が、センサー2の照度よりも大きくなるときであるとした。2つの音楽を流すときのプログラムついてである。旋回するときには、キラキラ星で、光についていってるときには、メリーさんの羊である。music_2として区別し、stopとstartを駆使してどちらの音楽も同時に流れないようにした。→四輪構造をやめ、二輪だけにし支えを作って三点支点構造にした。支えの摩擦を減らすために曲面を持つパーツを使用。→ライトセンサーを2つ付け、それぞれについてライトマックスをはからせることにした。→そのためには、ロボットが右、左の方向を感知しないといけないと思い、光センサーを2つつけた。それぞれの光センサーについて、(2つの合計についても)照度の最大値を読み取り、それより低くなったかどうかで光源の移動を読み取り、それについていくようにした。これは、最初の光の最大値を読み取るプログラムの課題があったので、そこのからの発想として最大値をそれぞれのセンサーについて調べてそれと比較することとした。→光源が左に移動したときには、センサー1が照度が最大値より上昇し、かつ、センサー2が最大値より低下するという条件として、より、それぞれ、左、右、直進するときの条件を厳しくした。その感度を上げるために、課題3では、左に向きたいときには、センサー1の方が2より大きいときとした。それで感度は上昇したものの、その条件が、重なってしまって、それによって逆にうまく動いてくれないときもあった。光を見失ったときには、その条件は、センサー1も2もともに50以下のときとした。左に向かうときには、センサー1の方がセンサー2よりも照度が大きいとした。これにより、センサー1の方が2よりも大きかったとしても、ともに照度が50よりも低かったときには、どちらの条件にも当てはまってしまう。懐中電灯も、ロボットも全く動かないかなくても、照度はコロコロ変わるものであって、様々な条件に変わってしまう。そこで、その照度の差の条件を大きくした。センサー2よりも1の方がより大きな照度がない限り、左に動かないなどした。これは、センサー2の照度の値よりも、照度が10足されたものよりもセンサー1の値が大きいときなどというようにした。→while(true)として、無限ループとした中に、さらにwhileの条件として何度も繰り返して行うプログラムとした。→キラキラ星の楽譜をインターネット上からもっとこようとしたが、うまく載っているものがなく、図書館にある、楽譜の載った音楽の本を探してそこから使った。→音楽の早さをWaitで遅くした。play_musicを入れまくった。→関数を使う事により幾分短くした。†ロボットの作り始めはテキストをモデルに基本構造を四輪車にした。プログラムを作る過程で旋回時間を調べることになったが本体が回転しなかった。そこで本体を二輪構造に作り直し、そこから本格的にプログラム作りに取りかかったので他のチームに出遅れた。今までの課題をやってきて本体自体の重心や床との摩擦、パーツはめ込みの強さなどが動作に大きく影響することがわかった。†コメントをどうぞようやくタイヤの向きが固定されている四輪構造をあきらめていただくことができてホッとしています。11:53:26読みやすくなりました。ところで、長文もいいのですが、長くなりそうなときは構造化することで、読みやすくなりますよ。段落を分けてみるとか、副見出しをつけるとか。