Finally, we have these in production! Took a lot longer than expected, due to some other urgent projects with Tangible Interaction, and Maker Faire. Anyway they're here and I think they look great.
The Centipede Shield adds 64 general purpose digital I/O to your Arduino. By "general purpose I/O" I mean that each pin can be individually configured as an input or an output, just like the normal digital pins on an Arduino. We've also cooked up a library that makes it easy to talk to the Centipede Shield; the syntax very similar to the normal Arduino digital pin commands.
#include <Wire.h>
#include <Centipede.h>
/* Available commands
.digitalWrite([0...127], [LOW...HIGH]) - Acts like normal digitalWrite
.digitalRead([0...127]) - Acts like normal digitalRead
.pinMode([0...127], [INPUT...OUTPUT]) - Acts like normal pinMode
.portWrite([0...7], [0...65535]) - Writes 16-bit value to one port (device)
.portRead([0...7]) - Reads 16-bit value from one port (device)
.portMode([0...7], [0...65535]) - Write I/O mask to one port (device)
.init() - Sets all register to initial values
Examples
CS.init();
CS.pinMode(0,OUTPUT);
CS.digitalWrite(0, HIGH);
int recpin = CS.digitalRead(0);
CS.portMode(0, 0b0111111001111110);
CS.portWrite(0, 0b1000000110000001);
int recport = CS.portRead(0);
*/
Centipede CS; // create Centipede object
void setup()
{
Wire.begin(); // start I2C
CS.initialize(); // set all register to default
CS.pinMode(55, OUT); // set all pins on port 0 to output
}
void loop()
{
CS.digitalWrite(55, HIGH); // write 55 high
delay(150);
CS.digitalWrite(55, LOW); // write 55 low
delay(150);
}
We also have some breakout boards and cables/connectors we'll add into the store soon (visible in photo below). Will make it really easy to wire up the 64 I/O to your project or to a breadboard.
Added a bunch of accessories for the Centipede Shield, as I promised above:
Centipede Breakout
The Centipede Breakout is an easy way to wire up switches, sensors, LEDs, or other devices to a Centipede Shield. Using a length of 20-Conductor Ribbon Cable and 2x10 Connectors for Ribbon Cable, the Centipede Breakout connects to any of the four Centipede Shield 2x10 headers. All signals are brought out to solder pads and labeled for easy reference. Additionally, the Centipede Breakout has white silkscreen areas for you to write your own signal names. The solder pads are spaced at 0.2", perfect for standard 0.2" screw terminals (if supplied by user). Four 1/8" diameter mounting holes are provided.
Centipede Breadboard Breakout
The Centipede Breadboard Breakout makes it easy to route signals from a Centipede Shield to a breadboard, or as a soldering location for individual wires. The 2x10 header works with our 20-Conductor Ribbon Cable and our 2x10 Connectors for Ribbon Cable. The breakout board is supplied with a strip of 20 0.1" breakaway headers, which will need to be soldered in place (if needed) by the user.
2x10 Connectors for Ribbon Cable
This connector works with our Centipede Shield, Centipede Breakout, Centipede Breadboard Breakout, and 20 Conductor Ribbon Cable. It's easy to use: simply align a piece of ribbon cable under the keeper bar, then use a vise or crimping tool to compress and latch the keeper bar over the cable. If desired, the cable can be folded back over the keeper bar and the strain relief bar crimped on top of the whole assembly.
20-Conductor Ribbon Cable
This is a high quality 20-conductor ribbon cable for use with our Centipede Shield, Centipede Breakout, Centipede Breadboard Breakout, and 2x10 IDC connectors. It is easy to use; simply cut to size and crimp an IDC connector on each end. Then plug into the Centipede Shield and a breakout board, taking care to match the red stripe to the same end of each 2x10 header.
portRead reads a bunch of lines simultaneously, here 16. Nothing to do with A->D conversion!
I like this feature (from the website)
If very long headers are used to allow two Centipede Shields to be stacked, then by changing the ADDRESS jumper it is possible to address 128 I/O pins.
Now if all those could be PWM outputs too (or even DACs), that would be even better!