PS3コントローラのスティックを操作して戦車の速度制御をしていますが、
微速走行し易くする改良を試みます。
スティックのVRはBカーブだと思われるので、Aカーブにしたいと思います。
VRを取り換える以外の方法を考えていましたが、Arduinoのスケッチで何とかしたいです。
PS3コントローラの左スティックの値を読み取り、モータ速度に変換しています。
Arduino関数:map(value, fromLow, fromHigh, toLow, toHigh)
value: 変換したい数値
fromLow: 現在の範囲の下限
fromHigh: 現在の範囲の上限
toLow: 変換後の範囲の下限
toHigh: 変換後の範囲の上限
一例として、中央(127)から最上部(0)の値をモータースピード0から255に変換しています。
(但し、中央部分の±10は読み取らせていないので、127ではなく117にしています。)
motor_speed = map(pos_y, 117, 0, 0, 255);
これを下記の様に変更します。
motor_speed = map(pow(pos_y,2), 13689, 0, 0, 255);
(補足)pow(pos_y,2)はpos_yの2乗、 13689は117の2乗。
2乗して扱う事で疑似Aカーブにします。
この理論で実際に試してみます。
結果は。。。。