Thinkpad の加速度センサをRubyから使う
今回の第9回 Ruby勉強会@関西での初級者レッスンは、「わかりやすいRubyのコードを書こう」という題で、小波ゼミの学生さんのコードを元に、わかりやすくしていく、という内容。
元々のソースコードがLeap-Frog法という数値計算の手法で運動方程式を解く、というものだったので、前日に調べておいたThinkpadの加速度を読む方法を早速組み込んでみた。 (前日に調べたのは読み出す方法までで、結果がどう値に対応してるのか調べるために、こっそりPCを振るのに苦労した)
Thinkpadを傾けると、そっちの方向に重力が働くというもの。
Rubyでの情報の可視化や入力インターフェースのものめずらしさもあってか、懇親会での受けが結構よかったので公開します。 * leap-frog.zip
加速度が変わりまくるので、コード中の方法ではあんまり意味がないような。
会場からは、最適化に関する質問や、誤差に関する指摘が多かっただけにちょっと心配だけど、本質はそっちじゃないので目を瞑ってください。
- ドライバと直接通信、しかも仕様がよくわかってないから適当、ということをやっているので、加速度センサ付きThinkpadでも動かない可能性があります。
- 昔 mimio と通信してた時は、変なデータを送ると画面が真っ青になったりしました。
sensor.dllのAPIを呼び出すのが正当なやり方。
テスト環境は、T43,WindowsXP,ActiveScriptRuby1.8.4,Ruby/SDL1.0.0Windows用binary。
Thinkpad以外のノートPCにも加速度センサを搭載しているものがあるらしいので、頑張れば動くかも。
次回の勉強会、みんなでThinkpadをフリフリしましょう。
参考
使い方書くの忘れてた。
$ ruby leap-frog.rb
0 comments »
〜へのトラックバック Thinkpad の加速度センサをRubyから使う
-
前回のバージョンはモノクロでスクリーンショットが地味だったり、放っておくと収束してしまって長い時間楽しめない、という問題があったのでバージョンアップ。 新機能は 速度...