Ruby & Hardware

Andrew Turner

highearthorbit.com

Why bother?

Give me a Ring

Jam to Music

RubySlim - Ruby API for SlimServer
slimserver = RubySlim::SlimServer.open('localhost')
slimserver.connect('myusername', 'mypassword')
puts slimserver.version

squeezebox = slimserver.players.first
squeezebox.turn_on
squeezebox.current_playlist.play

Clean your house

Wunny Babbits

NabazTag

Wunny Babbits

Example

nabaztag.choreography do
  led :top, :red
  event do
    ears :both, 45
    led :top, :off
  end
end

How To Survive a Robot Uprising

Example

m = Motor.new(@@nxt, :a)
state = m.read_state
m.forward(:degrees => 180, :power => 5)
state = m.read_state 
puts state[:rotation_count] #=> 180

Handheld Ruby

Even now...

Example

require 'osx/cocoa'
include OSX
OSX::NSBundle.bundleWithPath("/Library/Frameworks/AppleRemote.framework").load
OSX.ns_import :AppleRemote

class AppleRemoteDelegate < OSX::NSObject
  addRubyMethod_withType('appleRemoteButton:pressedDown:', 'v@:ii')  
  def appleRemoteButton_pressedDown(buttonIdentifier, pressedDown)
    puts "button #{buttonIdentifier}, pressed #{pressedDown}"
  end
end

Putting it together

Go forth and hack

Questions?