2005-04-21[n年前へ]
■傾斜センサ
PCで傾斜を検知するUI装備のソフトを作るために、数種類の加速度センサをいじってみる。ここ辺りを読んで、コントロールパネル経由でThinkpad内蔵の加速度センサの出力値を得る方法に変えようか。Thinkpad X41ベースのTablet PCというのが出れば、それを入手してみたいところ。
2005-04-28[n年前へ]
■Thinkpad 加速度センサのデータ取得
Windows\system32にあるsensor.dllの中身を覗いてみると、(Shockproof)GetAccelerometerDataとか、GetShockStatusなんていう関数がある。試しに逆コンパイルしてみる。そんなこんなの結果はこちらに。
C:\WINDOWS\system32>dumpbin.exe /EXPORTS sensor.dll 3 ShockproofGetAccelerometerData (00001610) 4 ShockproofGetAccelerometerDataEx (00001670) 7 ShockproofGetShockStatus (00001540)
2005-05-03[n年前へ]
■Thinkpad加速度(傾斜)センサ読み取りアプリケーション
最近発売されているThinkpad(他のノートPCでも同様ですが)では加速度センサを搭載していて、急な加速度変化が生じたときにはハードディスクを停止させる機能が搭載されています。つまり、Thinkpad(ノートPCを)を落としたときとか強い揺れが生じたときに、ハードディスクが破損しないようにヘッドを待避させ、データ消失を防ぐわけです。
そのThinkpadの加速度センサの時々刻々の検出値を出力するアプリケーションを組んでみました(GetAccelerometer.050503.lzh 57kB) Thinkpadが搭載している2軸の加速度センサの検出値を、とりあえず"Y軸値, X軸値"の形式でコンソール出力し続けます。加速度センサは、重力が働いている通常環境下では傾斜センサとして使うことができるわけですから、X軸値はThinkpadの横方向(左右の高さ後外)の傾斜を示し、Y軸値は奥行き方向(手前と奥の高さの違い)の傾斜を示すことになります。アプリケーションの使い方は、
GetAccelerometer.exe 100 1000という具合です。引数1はセンサ出力の間隔(ms)で、引数2は出力回数です。上の例では、100ms間隔で1000回にわたりセンサ値を出力します。つまり、上の例では100秒間にわたり10Hzのサンプリング周波数で加速度(傾斜)を出力し続けます。ハードディスク保護機構が備わっているここ数年のThinkpad(T41以降及びX41以降)ユーザーの方なら、色々楽しめる使い方があるかもしれませんね。
■Thinkpadを傾けてWindowを動かそう
というわけで、ついでに作ってみたのが「Thinkpadを傾けるとWindowが動くアプリケーションTilt_It.050503.lzh 248kB)」Thinkpadを左へ傾けるとWindowが左へ滑って移動していき、Thinkpadを右へ傾けるとWindowは右へ滑っていきます。もちろん、奥へ傾ければ上へと上がっていきますし、手前に傾けると下へ落ちていきます。右の画像内で、ブラウザ画面の前にある小さなWindowがありますが、そのWindowがThinkpad自身の傾きと連動して動くようになっています。
Thinkpad T41, X41以降のユーザーの方は、是非Thinkpadの液晶ディスプレイを180度広げた状態で、このソフトを使ってThinkpadを傾けてWindowを動かしてみましょう。何の役にも立たないソフトウェアですが、案外新鮮で面白いのではないでしょうか。結構、気持ち良いですよ。(地球を動かしたりも…できます) 動かしてみた画像はこちらにあります。
■ThinkPad X41 Tablet PC
傾斜センサが付いて、液晶ディスプレイにタッチセンサも付いているThinkPad X41 のTablet PCバージョン。ユーザの感覚に直結した傾斜センサやタッチ・センサを使って色々なソフトウェアを作って遊んでみると面白いかも。重量が軽ければ、アイデアスケッチ用にT42pと併用しても良いかなぁ。いつの間にか機種が増えている東芝のTabletPCも良いかなぁ、加速度センサへのアクセス方法を調べなきゃいけないけれども…。