日別アーカイブ: 2009年1月3日

HTC Touch Diamond の加速センサー

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 のボタン部分とタッチセンサー