Turn an Arduino into a USB I/O device - IOduino

Hey everyone,

I've made a firmware and a library (python/c++) which will allow you to easily control the I/O pins of an Ardiuno from your computer (running Linux).

You can find it on Google Code - search for IOduino

Just upload the firmware, and use the library in your code. The functions are identical to those used in the Arduino IDE (digitalWrite, etc)

Tell me what you think!

The can find the software and a getting started guide here - https://code.google.com/p/ioduino/

Sounds nice!

Think I would problebly create my own code (because that's most off the fun for me), but there are sure persons out there who are going to use this.

Yeah sure, writing your own code can be great fun! Libraries are useful if you aren't interested in implementing everything yourself and also they can be less buggy as they mature.

Also, I find myself writing parsers for Serial input to Arduinos all the time. The firmware for IOduino can be used as a reference for state-machine parsers for the Arduino (although I didn't comment the firmware very well...)


Sounds interesting -- is it similar to the Firmata firmware that comes with the Arduino IDE? Firmata allows you to control the Arduino device over a serial connection. On the computer side, you can use a library like the Arduino library for Processing. That's what I used to make Toolduino (http://nootropicdesign.com/toolduino/).

There's a Python library for talking to Firmata called pyduino: http://code.google.com/p/pyduino/

It's incredibly similar to Firmata! I didn't find that when looking for one previously...

Firmata seems to trump IOduino because it allows you to control Servos, communicate via I2C and you can use it as just a library adding your own components to the firmware.

IOduino is much more limited, but the libraries do conform to the Arduino IDE language more than pyduino (i.e. it uses digitalWrite, analogRead) Also IOduino has a more user-friendly protocol in that you can control it easily from a serial console (e.g. hyperterminal/minicom) with commands such as "dw1h" which is digitalWrite(1, HIGH);

Thanks for telling me about that :)

Cool, and I bet you learned a TON more by writing stuff yourself!