hirax.net::Keywords::「傾斜」のブログ



2009-12-02[n年前へ]

Ruby版 Thinkpad 加速度センサ類取得クラスを書きました 

 Lenovo(旧IBM)のノートPC ThinkPad にはハードディスク保護を目的として、加速度センサが付いています。SSDを搭載している機種でも、(その他のハードウェアは共通化されているからだろうと思いますが)やはり加速度センサが付いているということです。

 以前、C++でThinkpad加速度センサ類取得クラスを作りましたが(このC++コードを眺めてみると、不要な部分が残っていたので、その点については後で修正します)、今回はRubyでそのクラスを組んでみました。作成したRubyソースは、ここに置きました(accelerometer.rb)。ソース最下部には、使用方法もコメントアウトした上で付けておきました。また、このバージョンはC++バージョン同様、最近のThinkpadでも動く実装になっています。

 読みやすさのために改行を適当に入れたソースは、下記のようになります。

# jun hirabayashi jun@hirax.net 2009.12.02

class Accelerometer
  require 'Win32API'

  attr_accessor :x
  attr_accessor :y
  attr_accessor :temperature
  attr_accessor :presentState

  def initialize
    begin
      @sensorFunctionAPI=Win32API.new("Sensor",
        "ShockproofGetAccelerometerData", ['P'], 'V')
      @buffer=' '*17
      if @sensorFunctionAPI.Call(@buffer)
        parse(@buffer)
        @offsetX=-@latestRawAccelDataX.to_i;
        @offsetY=-@latestRawAccelDataY.to_i; 
      end
    rescue
      'We have some problem.'
      exit!
    end
  end
  
  def parse(result)
    @presentState,@latestRawAccelDataX,@latestRawAccelDataY,
    @latestAccelDataX,@atestAccelDataY,@temperature,
    @atestZeroG_X,@atestZeroG_Y=result.unpack("iSSSSCSS")
  end 

  def getAccelerometerData
     @sensorFunctionAPI.Call(@buffer)
     parse(@buffer)
     @x=@latestRawAccelDataX.to_i+@offsetX.to_i;
     @y=@latestRawAccelDataY.to_i+@offsetY.to_i;
     return [@x,@y]
  end
end

 このRubyクラスを使った加速度取得スクリプト例は、下記のようになります。ちなみに、Xが(ノートPCに向かって)左右方向で、Yが奥行方向になります。これで、1秒おきにThinkpadの傾斜をコンソール出力します。

require 'accelerometer'

accelerometer=Accelerometer.new
10.times{ |i|
  puts accelerometer.getAccelerometerData.join(',')
  sleep 1
}

 MA5授賞式で面白いものを作っている開発者を見たせいか、何か色々作ってみたくなります。4年ほど前には、この加速度センサテクニックを使って「「未来の立体ディスプレイ」を作る」とか色々作ったような覚えがありますが、まだまだ色々な応用がありそうな気がしてきました。というわけで、まずは準備のために、今日はRuby版 Thinkpad 加速度センサ類取得クラスを書いてみました。

2015-11-07[n年前へ]

「クレジットカード約款」や「インク変更」とか「傾斜マンション」とか 

 クレジットカード手続き書類の重要項目欄が極小文字で印刷されてる。高さで0.7ミリくらい、ホチキスの針の先より少し大きい程度。20cmの距離から眺めたとすると、計算すると、(文字を24×24で表現すると)視力2.0が必須という計算に。

3:09 PM - 8 Nov 2015

 横浜の傾斜マンションは10~12階建てで、建物間で2cmができたという。段差ができたのが高さ20〜30メートルくらいの地点とすると、建物の傾斜は2度強というところだろうか。…あれ?ピサの斜塔が4度くらいというのと比べると結構大きい?

6:22 PM - 3 Nov 2015

 不思議なことが起きている。ボールペン、パイロット ハイテックCコレトの黒インクが切り替わりつつある。ここ1・2ヶ月前に買ったものは赤外線を吸収するのだけど、ここ1〜2週間中に買ったものは透けて見える。カーボンブラックを使わなくなった?

6:07 PM - 2 Nov 2015
 手持ちペンで調べて見ると、Zebraのハイマッキーは赤外線を通さなくて、マッキーは赤外線を通す。…けれど、手持ちのハイマッキーはずいぶん古いから、これも最近のモデルでは違ったりするのかも…。

6:21 PM - 2 Nov 2015
 引き出しに入ってたゼブラ、ハイマッキーは赤外線に不透明だけど、マッキーは赤外線に透明。時期が違うせいかと思いローソン100に買いに行ってみたら、今売っているものも同様だった。ということは、太くて「ハイ」が付くか否かで耐光性がずいぶんと違っていたりするのかも。

7:38 PM - 2 Nov 2015



■Powered by yagm.net