I'm trying to wrap my head around a public art project that I've recently received funding for, and I'm hoping that someone here can help me with a bit of guidance.

The concept I'm working on is a kind of 'digital campfire' that builds and falls in intensity as people approach and depart.

The way I imagine it working is with a 15x15x15 RGB LED cube that plays fire-like animations of varying intensities in response to the presence of nearby people - detected by a 360 degree array of thermal sensors (probably something like Omron D6T sensors, rather than IR movement sensors).

Full disclosure: I'm an Arduino noob. I've tinkered with LEDs and soldering, but even the thought of building a non-responsive 4x4x4 LED cube hurts my brain. That said, I have a couple of months up my sleeve, a bit of cash, and a willingness to forge new neural pathways to get this done.

My main questions at this point are:

  • Can an Arduino even handle the processing power required to run a thermal activated 15x15x15 LED cube, even with multiplexing?
  • I'm considering 15-cubed because I want the object to have a fairly large physical presence, and have a relatively high definition. Is there any game-changing reason I should seriously consider something smaller? I anticipate being able to connect to a 240v power outlet (I'm in Australia), but running off battery would be ideal.
  • How difficult would it be to build a 360 degree thermal sensor array consisting of, say, 8 separate thermal sensors? The programming is clearly beyond me, and I expect to out-source this...

Any help or suggestions would be hugely appreciated. And don't be gentle – if my expectations need to be 're-aligned' to something closer to reality, I'd rather that happen sooner than later.



  • 2
    That sounds like a fun project. However... you're talking about 3375 LEDs there. That's a helluva lot of LEDs. Even with charlieplexing you'd need 59 IO pins just for the LEDs, and the wiring would be a nightmare. I'd be inclined to think about making it modular. Having it 16x16x16 would be more logical than 15x15x15 since it's a power of 2. Maybe make small modules of 2x2x16 (PCB at the bottom with 4 strings upwards) with a separate controller for each block. Get them to communicate - spread the load.
    – Majenko
    Jul 16, 2017 at 11:29

2 Answers 2


The answer to "Can an Arduino even handle the processing power" is probably No, but no one can really answer because you have not specified the problem.

Just for starters you have >3k LEDS, if you want to control RGB that means ~10k devices.

To operate at moderate brightness (10mA per LED) you will need at least a 35A power supply. This will require external high power circuitry to switch/control.

Do you need to individually control each LED? To control 10k devices you will need serious external circuitry.

Do you need to control brightness or just switch individual devices on/off?

You could probably achieve a solution, but 15 modules each controlling 15*15 LEDS may be achievable, 32 or 64 is probably more realistic.

Either way soldering by hand would be impractical, you need to design a board for each module.

You could use an Arduino on each module, but a ATMega chip would achieve the same end, without the unnecessary peripheral circuitry.


firstly we need a bit more detail, I'm assuming by saying a 15x15x15 cube you actually mean a cube with a 15x15 array of LEDs on each face, so you would have a total of 1350 LEDs. we also need to know if you intend to have just single colour LEDs of whether you want multi colour or even RGB with full control (like a monitor) assuming you only want single colour with on/off control then look into the MAX7219 or MAX7221 IC's, these can be bought with LED matrix's already fitted, and each IC can drive an 8x8 matrix of LEDs, so you would need 4 ICs to do each side (these can be daisy chained) and so a total of 24 ICs for the whole cube. but note that that would allow for 16x16 on each side.

the arduino can easily drive this many, what you need to consider is how often you want the LEDs to "update" i.e. the frame rate. the more you try and drive the slower you can drive it, however from experience i believe the arduino could easily drive that many LEDs in this arrangement.

on the subject of current the MAX72xx ICs work by multiplexing the output for you, so at most only 8 out of each 64 LEDs are on at any one time, so if you drive each at 10mA your maximum current would be 1.7A, probably a bit much for batteries (unless you use something big, AA's or a 9V won't cut it.) but still reasonable.

if you wanted individual brightness control things get more complicated, and the rate at which you could update the outputs would sharply drop off. I still think it would be feasibly for this many LEDs but you may find your update rate is only 10-20 times a second so any motion may not appear very smooth. but this way will require a lot more wiring, and will be a lot more complex to program.

if you want full RGB control then the amount of connections and components required would grow to ridiculous proportions, you would need 3 connections plus power to each LED so about 4000 connections between your control circuitry and your LEDs, and your current requirements would go through the roof due to so many LEDs being on at the same time.

and if I read wrong and you actually want 3375 LEDs on each face, for a total of 20250 LEDs then this becomes extremely impractical, even with output multiplexing (mentioned above in the MAX72xx bit) the current requirements would be insane. not to mention the time taken to update all those LEDs would drastically slow down how quickly you could update them. even at a max data rate of 30MHz (SPI) you will probably only be able to update your LEDs at around 1-2 times a second, and there would not be enough RAM in the arduino to remember the previous output states when you are calculating your next ones.

a raspberry pi may be more suitable from that point of view, but the current and the update rate would still be a problem.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.