1: 2011-07-14 (木) 15:29:36 yoshida[6] [7] | 2: 2011-07-14 (木) 15:57:58 yoshida[6] [8] | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | **プログラムの再修正 [#k7f8e282] | + | *プログラムの再修正 [#k7f8e282] |
もっと効率よく進むことができるようプログラムを修正します。 | もっと効率よく進むことができるようプログラムを修正します。 | ||
+ | |||
**赤外線反射センサの値を再確認 [#m6e92027] | **赤外線反射センサの値を再確認 [#m6e92027] | ||
[[赤外線反射センサの値を確認>FDIIICHAPTER9.2#k8495ea4]]で作成したIRSensor.cを再度実行し、黒い地面から白い地面に移動する際のセンサの値を確認します。~ | [[赤外線反射センサの値を確認>FDIIICHAPTER9.2#k8495ea4]]で作成したIRSensor.cを再度実行し、黒い地面から白い地面に移動する際のセンサの値を確認します。~ | ||
センサの値は、地面が白くなると急激に変化する訳でなく、徐々に変化しているのが分かります。~ | センサの値は、地面が白くなると急激に変化する訳でなく、徐々に変化しているのが分かります。~ | ||
- | #ref(line_8.png) | + | #ref(line7.png) |
これにより、黒と白の中間点では全力で直進、黒の方へ少しずれたら少し右へ、白の方へ大きくずれたら大きく左へと走行することが可能ではないでしょうか。 | これにより、黒と白の中間点では全力で直進、黒の方へ少しずれたら少し右へ、白の方へ大きくずれたら大きく左へと走行することが可能ではないでしょうか。 | ||
+ | |||
+ | **グラフを作る [#g558d264] | ||
+ | 赤外線反射センサの値と左右の車輪の動きをグラフにしてみます。 | ||
+ | 白と黒の地面の中心を70としていますので、ここを中心に左右が最大出力になるようにします。 | ||
+ | #ref(line8.png) | ||
+ | グラフの横軸は赤外線反射センサの値、縦軸は車輪のスピードです。 | ||
+ | 赤いラインが右車輪、青いラインが左車輪です。 | ||
+ | |||
+ | 黒と白の真ん中(センサ値70)の時、両車輪とも最大速度1000となります(最大値は1023ですが簡略化のため1000としました)。 | ||
+ | |||
+ | センサ値が70より小さい時は黒い方へずれているということなので、右車輪のスピードを下げて右へ曲がります。センサ値が小さくなるに従ってスピードを下げ右に曲がる量を増やします。 | ||
+ | |||
+ | 同様にセンサ値が70より大きい時は白い方へずれているということなので、左車輪のスピードを下げて左へ曲がります。センサ値が大きくなるに従ってスピードを下げ、左に曲がる量を増やします。 | ||
+ | **計算します [#wd05ab8a] | ||
+ | グラフを式にしてみます。~ | ||
+ | 右車輪のスピードが最小値(0)から最大値(1000)へ変化する部分を考えます。~ | ||
+ | スピードをY、センサ値をXとした場合、 | ||
+ | Y = aX + b | ||
+ | となります。これはXが70であればYは1000となるので、 | ||
+ | 1000 = 70a + b | ||
+ | と置き換えます。これを最初の式に当てはめると | ||
+ | Y = aX + 1000 - 70a | ||
+ | となります。 | ||
+ | ここでのaはグラフの傾きです。 |
(This host) = http://www.besttechnology.co.jp