Centipede Shield Now Available

Store link: http://macetech.com/store/index.php?main_page=product_info&cPath=4&products_id=23

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

  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
  CS.digitalWrite(55, LOW); // write 55 low

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.

You might have seen the old thread about the Centipede Shield prototype: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1257672398

Black is beautiful. Great job!

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.

I feel the need to have a need for 64 IO. :D

Looks great.

How fast can you do a single output-toggle (or Porttoggle)?

And: where did you define that long binarynumbers? (your b0110101111010101100)

Great stuff, you will definitely sell a lot of them! Are the schematics available? Which IC do you use?

is the portRead equivalent with analogRead???

Its absolutely gorgeous. Black PCB makes anything look good. Gold connections. Looks high quality.

Very impressive, I’ll be ordering soon!

I did a test compile with the library and it only added a little over 700 bytes to my project - much, much lighter than I thought it was going to be!

I’d also be interested in seeing the schematics for this great board

Wow, nice I'm looking forward to having to use this :D it looks very useful for led cubes.

Spam is getting neater all the time! Do you see Julie W is a bot? I didn't, at first :)

Awesome product.

Awesome product! Thank you for making this.

I'm sure, that once I hit the IO barrier, I'll find some use for this. ;)

Looks brilliant! One question? What is portread?

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!

Now if all those could be PWM outputs too (or even DACs), that would be even better!

If you require more PWM or Analogue IOs then buy the Arduino Mega.

Mind you, even the Mega will not provide the 64 extra digital IOs that the Centipede Shield provides.

But, even if you use a mega, you could still use this on top. With a little modification, that is. The Mega I2C pins are on a different location.