4: 2011-07-15 (金) 12:52:35 yoshida | 現: 2013-04-09 (火) 23:54:58 takaboo | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | *プログラムの再修正 [#k7f8e282] | + | *プログラムの修正 [#k7f8e282] |
もっと効率よく進むことができるようプログラムを修正します。 | もっと効率よく進むことができるようプログラムを修正します。 | ||
Line 10: | Line 10: | ||
**グラフを作る [#g558d264] | **グラフを作る [#g558d264] | ||
赤外線反射センサの値と左右の車輪の動きをグラフにしてみます。 | 赤外線反射センサの値と左右の車輪の動きをグラフにしてみます。 | ||
- | 白と黒の地面の中心を70としていますので、ここを中心に左右が最大出力になるようにします。 | + | 白と黒の地面の閾値を70としていますので、ここを中心に左右が最大出力になるようにします。 |
#ref(graph.png) | #ref(graph.png) | ||
グラフの横軸は赤外線反射センサの値、縦軸は車輪のスピードです。 | グラフの横軸は赤外線反射センサの値、縦軸は車輪のスピードです。 | ||
赤いラインが右車輪、青いラインが左車輪です。 | 赤いラインが右車輪、青いラインが左車輪です。 | ||
- | 黒と白の真ん中(センサ値70)の時、両車輪とも最大速度1023となります。 | + | センサの値が70の時、両車輪とも最大速度1023となります。 |
センサ値が20で黒い地面となりますので、右へ曲がるため右車輪の速度は0になります。反対にセンサ値が120で白い地面となりますので、左へ曲がるため左車輪の速度は0になります。 | センサ値が20で黒い地面となりますので、右へ曲がるため右車輪の速度は0になります。反対にセンサ値が120で白い地面となりますので、左へ曲がるため左車輪の速度は0になります。 | ||
Line 24: | Line 24: | ||
***右車輪 [#m1d1d081] | ***右車輪 [#m1d1d081] | ||
- | #ref(math_right.png) | + | y = (1023 / 50) * x - (2046 / 5) |
小数点数は扱いませんので、整数化します。 | 小数点数は扱いませんので、整数化します。 | ||
- | #ref(math_right2.png) | + | y = 20 * x - 409 |
***左車輪 [#s2cab8e6] | ***左車輪 [#s2cab8e6] | ||
- | #ref(math_left.png) | + | y = -(1023 / 50) * x + (12276 / 5) |
左車輪も同様に整数化します。 | 左車輪も同様に整数化します。 | ||
- | #ref(math_left2.png) | + | y = -20 * x + 2455 |
**スピードの補正 [#v3af612b] | **スピードの補正 [#v3af612b] | ||
Line 48: | Line 48: | ||
</pre> | </pre> | ||
}} | }} | ||
+ | AX-12Aを逆転させるには-(マイナス)値を指定すれば問題ありませんが、後退もその場での旋回も行いませんので、有効範囲を0~1023とします。 | ||
+ | 範囲外の値については、0以下の場合は0、1023以上は1023に補正します。 | ||
**プログラム完成 [#y8b96e69] | **プログラム完成 [#y8b96e69] |