A Ruby implementation of the Firmata protocol.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples Use correct serialport for demo. Sep 19, 2012
lib removed deprecation warnings for StringIO methods by changing bytes t… Mar 16, 2014
test Merge pull request #14 from jlgoldb2/master Mar 18, 2014
.gitignore No need for harness.rb to be in repo. Aug 20, 2012
Gemfile Add board.rb Aug 10, 2012
LICENSE Hey Ho Let's Go Aug 10, 2012
README.md
Rakefile Add default rake task and dummy test file. Aug 13, 2012
firmata.gemspec Add pry as dev dependency. Aug 19, 2012

README.md

Firmata

A Ruby implementation of the Firmata protocol.

This library is inspired by the awesome firmata by jgautier.

Installation

Add this line to your application's Gemfile:

gem 'firmata'

And then execute:

$ bundle

Or install it yourself as:

$ gem install firmata

Prerequisites

  1. Download the Arduio IDE for your OS
  2. Plug in your Arduino via USB
  3. Open the Arduino IDE, select: File > Examples > Firmata > StandardFirmata
  4. Click the Upload button
  5. Make note of the serial port: Tools > Serial Port

There have been reports of issues with Firmata 2.3. Try downgrading to Firmata 2.2 if you're having a problem.

Usage

Here is a simple example using IRB that will turn pin 13 on and off. (Replace xxxxx with the USB port from step 5 in Prerequisites)

1.9.3p194 :001 > require 'firmata'
1.9.3p194 :002 > board = Firmata::Board.new('/dev/tty.usbmodemxxxxx')
1.9.3p194 :003 > board.connect
1.9.3p194 :004 > board.connected?
 => true
1.9.3p194 :005 > board.version
 => "2.3"
1.9.3p194 :006 > board.firmware_name
 => "StandardFirmata"
1.9.3p194 :007 > board.digital_write(13, Firmata::Board::HIGH)
1.9.3p194 :008 > board.digital_write(13, Firmata::Board::LOW)

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request