Ruby用Arduino Firmataライブラリにanalog_readとdigital_readの値が変わった時のイベントつけた


ふつうこうやってアナログ0番ピンをanalog_readするけど

require 'arduino_firmata'

arduino = ArduinoFirmata.connect
puts arduino.analog_read 0 # => 0 ~ 1023


これでアナログ値が変わった時にイベントが起こる
arduino.on :analog_read do |pin, value| # analog_read event
if pin == 0
puts "analog pin #{pin} changed : #{value}"
end
end



同様にdigital_readもHIGH/LOWが切り替わった時のイベントがとれる
arduino.pin_mode 7, ArduinoFirmata::INPUT

arduino.on :digital_read do |pin, status| # digital_read event
if pin == 7
puts "digital pin #{pin} changed : #{status}"
end
end


イベント管理はNode.jsのEventEmitterが便利だったので、それのRuby版を使ってる