Matrix LED Candle Light




About: Nothing special about me. Just voiding warranties.


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...

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

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

Be the First to Share


    • CNC Contest

      CNC Contest
    • Make it Move

      Make it Move
    • Teacher Contest

      Teacher Contest

    16 Discussions


    6 months ago

    Hello Doncore. Thank you for having shared your project.

    I am wanting to make a double sided version, I hoped to simply use a second LED matrix with driver on the same I2C address but it seems this will not work.

    Perhaps I will have to use one driver and two LED displays, which seems to be what you referred to? I am wondering how you did this since there is no resistor in line with each LED and putting LEDs in parallel does not ensure equal brightness...

    You suggestions would be most appreciated, thank you....

    2 replies

    Reply 6 months ago

    Exactly. One Driver andep two displays. The brightness keeps quite bright. I've put one Display onto the other one. Was just for testing. Worked.


    Reply 5 months ago

    Great Instructable! I'm being to build one with 2 displays. It would be nice if the second display on the backside would show a mirrored frame. But i stuck on it. There is no way to mirror the wiring because of the schematic of the charlieplexed matrix board. A own mirrored matrix PCB would be a solution, but who want to solder from hand 144 LEDs. Or a second driver with own address and mirroring in code. But i understand the code to less for that.


    Question 5 months ago on Step 6

    tnx for the tutorial! i have a dumb question, my flame is 'upsidedown' is there a possibility to flip the image 180 degrees? kind regards, paul

    4 answers

    Reply 5 months ago

    I'll send you the Code. No big Problem.


    Reply 5 months ago

    great, tnx for the good work!, hope you win the competition


    Reply 5 months ago

    Done! tnx a lot, kind regards, Paul


    7 months ago

    Very good Instructable! But when i try to upload the code, i got the message that the sketch is too big. The Sketch size is 29.312 bytes, the maximum is 28.672 bytes. Can you help me?

    2 replies

    Reply 7 months ago

    Hi, sorry for beeing late...
    well, the code should fit. but i'll make another one with just one frame dropped.
    I'll post it later...


    Reply 7 months ago

    Hi doncore, i've just uploaded the new sketch, and it works like a charm! Thank you very much for your help, Dankeschön!


    9 months ago

    I really like the way you were able to get that lighting effect with the Adafruit matrix board! Well done.