前に書いたphidgets-ffiを使う。ボリュームとスライダーと明るさとタッチセンサーを使ってみた。
Mac+Ruby+Phidgets簡単すぎてヤバイ。多少高いが、金をうならせれば誰でも電子工作的なものとWeb的なものを合体できる。箱から出して接続してすぐ使えるってすごいなー

 

■インストール

Phidget21をインストールしてからgemをいれる

gem install ffi phidgets-ffi
 

■プログラムを書く

ffi-ifkit.rb
#!/usr/bin/env ruby
require 'rubygems'
require 'phidgets-ffi'

ik = Phidgets::InterfaceKit.new

ik.on_attach do |device, obj|
puts "#{device.device_class} attached"
end

ik.on_sensor_change do |device, input, value, obj|
puts "sensor[#{input.index}] => #{value}"
end

sleep 5
if ik.attached?
loop do end
else
puts 'device not found'
end
 

■動かす

Phidgets InterfaceKitにセンサーつないでいじるとon_sensor_changeイベントが起こる
interface_kit attached
sensor[0] => 508
sensor[1] => 0
sensor[2] => 488
sensor[3] => 986
sensor[4] => 0
sensor[5] => 0
sensor[6] => 0
sensor[7] => 0
sensor[3] => 998
sensor[2] => 473
sensor[2] => 489
sensor[2] => 479
sensor[2] => 469
sensor[2] => 486
ちなみにon_sensor_changeイベントを使わなくても自分でPhidgets::InterfaceKit#sensorsを参照すれば読める。
raw_valueは12bitADコンバータの値で、0〜4095の値を返すようだ。to_iすると0〜999が得られる。
puts ik.sensors[0].raw_value
puts ik.sensors[0].to_i