Matrix LED Candle Light




Introduction: Matrix LED Candle Light

About: Nothing special about me. Just voiding warranties. Admin of and


in this instructable you will learn how to build a very long lasting LED-Matrix-Candle.

It looks very modern, doesn't smoke ;) and can be reloaded with your smartphonecharger.

The yellow light gives you a very good expression of a real flame.

To be exact: it is a video of a real flame which is converted into led-commands.

I came across this idea on several maker-faires and by watching "flame pendent" on adafruit.

While the adafruit is nearly perfect, it doesn't look elegant or at least like something i would put into my livingroom. And adafruit isn't the cheapest way to build something.

The ones on the maker-faires where kits. Nothing against kits, but you have to solder every SMD-LED by hand.

And it was quite expensive, too.

You can buy ready-build candles from Ingo Maurer ... if you have the money.


A bright, modern looking LED-Candle on a budget. Can't be that hard to build...

Step 1: What You Need

  • 3D-printer (or printed parts)
  • quickcrete, (concrete)
  • arduino pro micro 16Mhz (8Mhz doesn't work)
  • TP4506 LiPo-loader
  • Adafruit LED-Matrix (yellow) and PWM Driver
  • some 1.5mm aluminium sheets (and a way to bend it)
  • double-sided gluetape
  • thin wire
  • small switch
  • one 18650 batterie with soldertips (no cheap ones, choose samsung or panasonic)
  • spraypaint (black matt recommended)

The soldering is quite easy.

If you can't get the aluminium or the 3D printed parts, you can contact me.

I still have some of them. This project didn't work on the first or even the third try. I've changed a lot while building and have some spare parts.

To give you an idea of the construction, have a look at the animation.

Step 2: Print the Parts

You don't have to print many parts.

It's the inner housing and the bottom plate (which contains the switch).

At least 4 little helpers, which will be needed to guide the wire through the aluminium.

After printing you should try if everything fits in. Or at least the Arduino and the TP4506.

If you dont want to use aluminium and may have a better idea, you can change the files, too.

All Fusion360 files are included.

Step 3: The LED-Matrix

Every solderpoint is printed on the modules, so you can't make many mistakes.

But you need to be carefull. Don't solder the pins without numbers.

You should solder only one side on the last pins to get the black placeholder on both sides.

So: solder this Pin to the PWM but not to the LED-Matrix.

Have a look at the picture 3. The matrix will be placed on top of the aluminium and "stands" on the placeholders.

I've tried several methods. Solder it before adding the shaft? After adding it? None is better.

Cut the pins as short as possible AFTER soldering to get a nice finish.

(This pictures are a little bit older. You don't need screws anymore)

Step 4: The Shaft

Two bended parts. One of them has to be 5mm longer than the other one. 1.5mm aluminium (very important)

Mine are about 185mm high, 28mm width (important). The bended part is about 18mm long.

That way it fits perfectly between the LED-Matrix and the PWM-Controller.

To fit the cables between those parts, you have to glue the little helpers with double-sided tape on the longer one.

Just mark it with a knife. They should be placed about 3cm higher, so the helpers do reach into the display.

On the bottom they can reach into the housing. That way the hold the batterie in place, too.

But don't let them get too long into the housing. It's not much room in there.

Put the wire between the helpers and place the other shaft. As written before: 5mm difference.

You can place the display on top to get a perfect match.

Cut the double-sided tape just under the display and glue the second shaft on the helpers.

Congratulations. This was the first part where everything could have been gone terribly wrong.

Use some thicker double sided tape on the "feets" and peel the siliconpaper of.

Now you have to use some force to push the shafts through the housing. It does fit, but it's as tight as possible.

Step 5: Molding the Base

I'm a big fan of quick drying concrete. You can mix it quite liquid and it still works very good.

To build the mold, i'm using waterresistant plywood. In Germany they are called "Siebdruckplatte".

10mm around and 15mm on top of the housing is enough concrete.

Prepare the housing by sealing the USB-Port and with very thin (tesafilm) tape, the shafts.

If you miss this part, the concrete will pour into the shaft. Looks terrible and the concrete will tend to tear apart at exactly that position.

Put good double-sided tape on the bottom plate of the housing. This way the hole thing will stay in place while pouring the concrete into the mold.

Let it dry at least twice the time you think it should have been enough time.

If the base doesn't look perfect enough you can file the edges or use some sandpaper.

It doesn't have to be perfect. It's concrete. It has to have some "errors".

You need to peel the double-sided tape of the bottom plate. Use a spatula to get it of the wood.

Step 6: Put Colour on It

The aluminium should be cleaned with some kind of alcohol.

Using isopropanol is allways a good way to start. You don't have to grind/sand the surface before spraypainting it.

Just cover the concrete as precise as possible at the entrypoint of the shaft.

And cover the wires and little helpers on top.

Spray two or three very thin layers to get a perfect finish.

Let it dry twice the time as noticed on the spraycan.

At this point i let it cure over night in a warm room before getting to the next steps.

The concrete will change the colour over night.

Step 7: Electronics (in the Box)

Flash the Arduino with the added code. You can try the code from adafruit, but it will not fit. Just a little bit to big.

EDIT: I've added another code. It's one frame smaller. Just in case.

EDIT 2: I've added a data.h with rotated frames.

I've deleted just one frame and recompiled the code with the python script. Using 99% of space.

28664 bytes ... just 6 bytes left.

While you flash you will see three LEDs. One in constant red and two blinking. The constant red LED (near to the usb-Port) should be destroyed with a very small plier. Well, you could change the code, so the LED doesn't light up, but you can destroy it, too. And i don't think that there is enough space left for the code. Or you have to delete another frame.

The connections are quite easy.

Arduino -> Display

D2 -> SDA

D3 -> SDL


Ground -> Ground

TP4506 -> Arduino

Out - -> Ground

Out + -> /Switch -> RAW

TP4506 -> Battery

self explaining

Just make sure all wires are long enough. I'm using 10cm long wires.

Solder every solderpat before soldering the wires on them. You don't want to push the wires through the pinholes.

Just solder them on the pinholes and think of the way the wires will bend, when you have to put all parts together.

Step 8: Electronics and the Display

If you bend the pre-soldered endings from the wires just a little bit, those endings will just slip into the pinholes from the display.

This is the most annoying part in this instructable. You may pull the wires from within the housing to get a better position.

Trust me, it will fit. I've made three of them, but couldn't find a real good solution.

Check your connections twice.

First test. Finally. You will be amazed.

If the display just gives you one random pattern (see picture 1), your batterie is to low.

Now you can peal off the upperpart from the siliconpaper on the helpers and put the display right in place.

As gently as necessary. Everything in place and it still works? Fine. To fix the display finally, you should pour some clear glue from top through the Matrix and the PWM-Driver. Just where the wires where soldered.

The glue will find a way through the wires and glues the Display onto the helpers.

Step 9: Final Assambly

You should bring the Arduino first into position, followed by the TP4506.

There may be too much space for the TP. If thats the case, you can glue it.

You should be able to push a USB-cable into it without moving the TP inside the housing.

Now bring the isolated batterie into it. It's getting quite full in here. Try to bring the wires down.

All in place, try to put the bottom plate on it. If it doesn't fit, you can use a plier to break the noses away.

They are just an extra support to the batterie.

Put some feet under it, if you like.

Step 10: Final Thoughts

The candle lasts 29 hours until it has to be reloaded.

You can even get a little bit more runtime by using a adafruit trinket. But it's quite expensive.

I've made some tests with several Arduino-like-systems:

WEMOS D1 mini: starts at 3.3 V and draws 0.15A

Pro Micro: starts at 3.2V and draws 0.1A

Original Trinket: starts at 3V and draws 0.08A

A nano doesn't work because it needs 4.4 V to start (drawing 0.11A)

A 8MHz pro micro gives you about 12 frames per second. That will drive you crazy. So don't even try.

When the battery gets empty, the last frame will be shown on the display. Just no animation, but still light.

The microchip needs just a little more power than the display.

The light is quite bright and really gives a candle-like feeling - just with an industrial modern look.

The TP shines red while loading (with max 1A) and gets blue, when the battery is full.

A two sided version is possible, but not easy to build. The PWM-Driver can power two Displays at once.

But you have to mirror all solderpoints and connect some tiny cables. Sounds like fun.

The energy draw does not get much higher while using two displays. About 0.01A.


Thank you for reading.

I hope my english wasn't that bad.

I would be really happy if you vote for this project in the "Glow" contest.

Make it Glow Contest 2018

Participated in the
Make it Glow Contest 2018

1 Person Made This Project!


  • Battery Powered Contest

    Battery Powered Contest
  • Plywood Challenge

    Plywood Challenge
  • Plastic Contest

    Plastic Contest

50 Discussions


Question 3 months ago

Received my esp32 boards today. Got them recognized and flashed with above code all worked well and i have eliminated the need for the v3 18650 shield and 5v. Can you point me to some code that I could merge with the candle matrix code to enable the timer and then have the esp32 deep sleep while off and turn back on?


Answer 3 months ago

to start coding, timers are a very good point to begin.
There should be an onboard LED on your ESP.
Try to make a one minute timer.

There are tons of examples, even on instructables.
Or an randomnerds


Question 3 months ago

Any ideas on adding an automatic on/off circuit either dusk to dawn or a 4\6\8 hour timer? I assume it would be not possible to add any code to the arduino ro perform this function with a photocell shield since there's no room for more code.


Answer 3 months ago

Well, there is no space left for any code.
But the main problem, even with enough space: the arduino would draw the battery life with a timer.
When the most Power gets consumed while in idle ... well, doesn't make sense, does it?
So: if you realy want to do that, you should use an ESP8266 or ESP32.
They use more energy when ON, but much much much less energy when in sleep mode.
But: the ESP8266 can only sleep for about 60 minutes. You could freeze the code for a second before starting and add another hour etc.
An ESP32 doesn't have this limitation.

Best way to go: either use an ESP32 and programm it or take the guts out of an LED-Light with built-in-timer an use the "ON"-State as a trigger.


Reply 3 months ago

The esp32 is a beast. Enough room.


Reply 3 months ago

I have some cheap flicker candles that when they are turned on, they remain on for 8 hours. The circuit isnt accessible though and the flicker to the led consists of pulses. I wish i could use only the timer on it. I also have some of those flicker candles that are little plastic flame things that also wiggle by a pulse but maybe I could use the led power on that one and bypass the pulses.


Question 3 months ago

Ok wired this up but I am getting no lights on the matrix to light. Here is my wiring what am I doing wrong? I have flashed the included .ino and .h files included above and Arduino indicates it was a success. I am powering up the LIPO Shield with 18650 batteries that will range from 3.8 to 4.1 volts and this supplies 5V to both my Matrix and the Arduino Nano. EDIT: BOOM, I got it. I forgot I had to use A4 and A5 on the Nano not D2 D3! Now I just gotta get a photo cell in the power circuit so it will turn on at dusk and off when the sun comes up. Thanks a ton. I'll submit some photos of the finished item(s) soon.


Answer 3 months ago

Waiting for pictures :)


Question 8 months ago

Hi i like your project very much! I want to ask where is the code of Arduino, sorry ~


Answer 8 months ago

See end of step 7


Reply 8 months ago

Ťhank you!


1 year ago

Which promicro arduino would recommend?


Reply 9 months ago

Yes something is amiss with comments here, on my PC I can't even see any comments. But what I plan is to power my arduino with my LIPO bank but if the voltage is too low to power my arduino then I'll use those LIPO holders I referenced earlier, they have a five volt output from a single 18650. I will be using a bank of X20 18650 wired in parallel.


Reply 9 months ago

Hi @JeanP27
I wasn't able to write @instructables for some weeks. I don't know what exactly caused the prpoblem, but ... well, i can write again :)
Did you manage to get it working?
I've noticed that you use a nano. This specific Arduino needs to much power to be driven bei a LiPo. That causes a static Image instead of a flame on the matrix.
See the last words on the instructable. I've compared several arduinos.


Reply 9 months ago

I have most built just wiring to be done will be powered with lipo bank with 20 18650. I put project on hold for a bit.