phatIO uses file system to control external hardware

[Andrew Smallbone] wrote in with a link to his latest open source project. This is phatIO, a USB I/O device that uses a mass storage file system for control. The idea is that any operating system can manipulate files on a USB storage device. This enumerates as mass storage, and any alterations you make to its file system will result in pin manipulation on the I/O header.

We’ve long been Linux advocates and enjoy the fact that everything on a *nix system is a file. This simply extends the idea across multiple platforms. [Andrew's] guide for the hardware gives an overview of how the system is structured. The top ‘io’ directory contains sub-directories called mode, pins, status, and a few others. Inside the directories are files for each pin. Writing to these files has much the same effect as writing to a data direction register, port register, or reading a pin register on a microcontroller.

The board is not yet in production and the github link to his hardware files gives us a 404 error. But there is code available for several software demos. After the break we’ve included video of the phatIO driving a Larson scanner.

[Read more...]

A Simple Method for Expanding Arduino IO Capacity

Although there are other ways to do this, [Rod] has decided to write up his method of using two Arduinos and the I2C protocol to expand an Arduino’s IO capacity. As seen in the picture above, you’ll sacrifice 2 analog pins, but if you happen to need IO and have an extra Arduino lying around, this could really help. [Rod] also notes that this method could be used with many Arduino’s in parallel if the situation called for it. The code for this simple hack is included as well, so be sure to check out his site if you want to try this idea.

Some other solutions for extra IO would be to buy an Arduino Mega with 54 digital IO pins or the Muxshield which gives you 48 IO (and is stackable for other shields). An advantage of using the two Arduinos, is that if they are needed to be split in the future for different projects, this could be done. It’s good to have options for your IO needs as every hack is different.

Check out the video after the break to see everything being hooked up.

[Read more...]

Arduino I/O Speed Breakdown

[Jee Labs] has worked out how long it takes for an Arduino to perform various I/O operations. Predictably, analogRead() takes the longest, followed by analogWrite(). Arduino really falls behind when it comes to digital pin I/O: digitalWrite() takes a whopping fifty times longer than a direct bit write to a port register!  This is something to take into consideration when you are looking to do some beefy I/O with an Arduino. Perhaps this I/O performance will be addressed in the future with Arduino 1.0.