The 40 IO, and LED PWM bitbanging

My friend got all excited this morning about LED cubes; a good thing. Having searched and searched I cannot find another supplier for breakout boards for the 40 IO i2c expander that GHI used to sell (which was awesome)

Does anyone know where I can get it?

Also, using the upcoming fez hydra, would it be possible to bit bang the 40 IO so that they produce PWM control of LEDs? Since white multicolor diffused leds in bags of 100 can be had on ebay for 30 bucks I was hoping to be able to do it with 1000 leds (10x10x10 cube) x3 colours (i.e. 3000 PWM IOs)

Before I even consider going forward, can someone tell me if this is even technically possible? I know that the arm9 200mhz 32 bit hydra can handle it but what about i2c.

Look here : a 32 channels PWM shield that can be daisy-channed up to 640 PWMs
However, you should maybe perform some kind of multiplexing ( Charlieplexing ? )

I also own a “rainbowduino” which is basicaly a 8x8 RGB led matrix you can control via I2C or serial and daisychain.

Have Fun :stuck_out_tongue:

Charlieplexing? n pins control n2 -n leds. Kewl thanks Nicolas3.

Therefore for 3000 pins I would need 56 pins. Therefore it can be done with a standard Fez. Thanks dude.

Charlieplexing has some drawbacks (in term of luminosity and CPU power) - but if you are interested, there is an good article here :

@ Kurtnelle

I built a 3x3x3 cube last week and have what I believe to be a fairly robust software framework that I’ll be adding to Codeplex probably tonight ( It might be a good place for you to get started and I’d love to see a CubeLed10 class added :slight_smile: You’ll really have to work on optimizing your effects code at that size. If all goes according to plan, I’ll have alot more detail added to my blog tonight. I’ll keep you posted.

Personally, I can’t imagine having enough time to solder up a 10x cube. I’ve recovered enough from the 3x cube enough that I am considering a 5x cube.

@ ianlee74 Yes I expect soldering and wiring 4000 led pins (3 color) would take me a few weeks but apparently I like challenges. My recent attempts with CNC makes that clear to me :slight_smile:

So it seems that the refresh rate of the CharliePlexing might be an issue, but I’ll come up with something. Also, it would be cost effective to use the fez hydra to do the math and 3 or 4 usbzi’s to do the work.

Don’t solder - just use a 6 face 8x8x3 rainbowduino I2C led matrix :smiley:
You need some serious software to address it !

@ kurnelle Soldering 4000 LED pins isn’t a challenge, it’s a practice in boredom. By the end of the 3x cube my brain so badly wanted to move on to something more challenging. The software is the fun part of the project for me. Your CNC project on the other hand is an interesting challenge!

@ nicolas3 Post a link to what you’re talking about. I don’t see any solderless solutions on their site.

The board is here (it’s an arduino…)
The led matrix to use with is here :

I ordered both mine from robotshop (because shipping from china is sometimes a pain !)

You just connect the led matric to the rainboxduino driver, the only soldering involved is the power and I2C ?

Ah, I see. I don’t see how that matrix helps with building a cube though. You can’t see through it which is a big part of the effect from cubes.

@ kurtnelle Did you see this thread last week? There’s a great how-to on Coding4Fun on building an 8x8x8 using shift registers.

Thank You Ianlee74, I understand better the transparency concept now with this video !

So here is the plan: Gonna use this ( and this ( along with 10 bags of rgb leds and a fez to create a 10x10 matrix that should have a 18 pin count.

@ kurtnelle, I wish you a lot of success ! I have seen several 10x10x10 cube video on youtube, and I find it definitly mesmerising :slight_smile:

If anyone interested, I will release on the code site a rainbowduino driver next week, using the RainBowDashBoard serial firmware. It is limited to a 8x8 RGB display or a 4x4x4 RGB cube (for which I think they are selling the kit somewhere…).

@ Nicolas, kewlio. That should reduce my learning curve for the software aspect. Thanks dude.

Seems I was hasty in the parts list last time. Shift registers are way cheaper :

Problem with shift register, is that you need either several wires and a lot of time to address them (especialy in netmf, but not a problem in RLP). However, an efficient way to address them is to use very fast SPI bus. Look at my driver for the DFROBOT SPI LED display:

It is basicaly many 595 shift registers in serie working in SPI. My driver allows both software and harware SPI. If you use hardware SPI, it is very fast (megabits !) and you can daisy chain dozens of 595 addressed on a single bus. However, farther you go down into the chain, slower it is to address.

I suggest you test the SPI bus with thoses IC’s :wink:

However, shift registers provides only 0 and 1’s output : hard to make theluminosity vary as if using PWM chips.

Another problem about the shift registers might be “power” if you address many of them.
Each led is drawing some amount of current. If does not count if you are having dozens, but not hundreds. That is usualy taken care by making some “visual” multiplexing : like TV or cinema, you light each led at least 50 times a second, and the human eye sees it always on. That spares a lot of power at the end !

  • You light a first row / panel
  • Then the second one, etc etc
  • then go back to the first row
    All very fast. At the end, you save a lot of power. Look a the rainowduino schematics to have a clue how it’s done for an example.

@ Nicolas3 That’s something to consider

Rainbowduino driver added here :

Have fun :wink: