Skip to content

Instantly share code, notes, and snippets.

@hardbap
Created September 16, 2012 12:59
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hardbap/3732349 to your computer and use it in GitHub Desktop.
Save hardbap/3732349 to your computer and use it in GitHub Desktop.
Welcoming our new robot overlords: Arduino programming with Ruby

Prereq

Arduino

What is Arduino?

Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments.

Create "sketches" (combo of C/C++) in a Java based IDE and uploaded to Arduino via serial port.

/*
 Blink
 Turns on an LED on for one second, then off for one second, repeatedly.

 This example code is in the public domain.
*/

// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;

// the setup routine runs once when you press reset:
void setup() {                
    // initialize the digital pin as an output.
    pinMode(led, OUTPUT);     
}

// the loop routine runs over and over again forever:
void loop() {
    digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
    delay(1000);               // wait for a second
    digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
    delay(1000);               // wait for a second
}

Firmata

What is firmata?

Firmata is a generic protocol for communicating with microcontrollers from software on a host computer. It is intended to work with any host computer software package.

This firmata protocol uses the MIDI message format but does not use the whole protocol.

Make sure you use version 2.2. There are known issues with 2.3.

Shout outs

Current Ruby Options

  • ruby-firmata

    Not fully implemented or currently active.

  • rad

    A full IDE aimed at replacing the Arduino IDE.

  • arduino

    Implements own command wrappers in a custom sketch.

  • ruFirmata

    Port of pyFirmata. No longer active.

Hacking

What about EventMachine?

  • Evented serial communication depends on the pure ruby version. Some issues with pure ruby version especially with *nix signals.

  • Blocks the main thread of execution. Forces the design into client/server relationship.

Demos

What's on tap...

  • enhance cookbook with vids, Fritzing schematics, parts lists
  • implement pulseIn in firmata so we can Ping)))
  • components, components, components
  • Wireless? WiFly, XBee, Electric Imp

Reference

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment