HTC Touch Diamond の加速センサーから値を読み出してみました。
参考にさせていただいたのは下記サイトのプログラムです。
・Scott’s Weblog Fun with the Diamond’s tilt sensor
API は Touch Diamond に含まれている HTCSensorSDK.dll を呼び出しています。
取り出せる値は 3軸センサーのそれぞれの加速度 X Y Z。
ソースにはだいたい -1000~1000 程度の範囲で傾きと書かれていますが、
やはり重力加速度を表しているようです。
何もしない状態で ±1000 前後 (1G)。強く振ると ±2400 程度の値も取れます。
データの連続取得は 40msec 程度の間隔が必要です。
当初動かしたときは 1/30 や 1/60 sec でサンプリングしていたため、値が更新されず
少々悩みました。
使用しているセンサーはレジストリの DeviceVendor より Kionix KXSD9。
direction=5 液晶背面方向 -Z
direction=4 液晶面方向 +Z
direction=1 左サイド -X
direction=0 右サイド +X
direction=2 下 +Y
direction=3 上 -Y
struct SENSORDATA {
short ax;
short ay;
short az;
short zero;
int AngleY;
int AngleX;
int direction;
};
例えば机の上に水平に寝かせた状態だと、液晶背面方向が重力方向だから
az = -1000 前後に、direction が 5 になります。
SENSORDATA の最後の値はこのように、大まかな端末の向きをそのまま表して いるようです。
いるようです。
AngleX/AngleY はおそらく極座標か何かだと思いますが未調査。
関連エントリ
・HTC Touch Diamond のボタン部分とタッチセンサー