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

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
		

Go forth and hack

Questions?