Nifty LED products (37 LED hex panels)

My goal is to empty @jeff’s wallet at a distance and also spur him and others to make beautiful items. Oh and I’ll probably buy some of these too… If you find a cool LED item, please share.

I’ll start:

HEX RGB LED Board (SK6812) | m5stack-store

Slightly bigger than 1 inch (30mm edge to edge, 35mm corner to corner), this 37 led Hexagon looks like it would be fun. At under $4 (currently on sale less, $4 at AliExpress, more expensive from banggood), imagine a few of these twirling… The ring layout 1-6-12-18 (but not wired that way, it is in series, left right top to bottom…) is pretty compact so I suspect it’ll look good. Hexes tile well but don’t do 3D shapes (so no cool easy polygons)


That price is pretty insane. A lot of the m5stack stuff is, and I think it must be heavily subsidized or operating at a loss.

1 Like

I bought (at more expensive prices from Amazon, but way faster) some of the Atom items. The Atom Matrix with a 5x5 led matrix on top and acceleramator (and the main button to press is underneath, so you push down on the display) is quite nice. The Atom Echo speaker sucks and is tinny though, so not recommended.
I’m considering getting some Atom Lites to drive LEDs in as small (and cheap) a package as possible.

I also got a M5StickC Plus, which is quite amazing, loaded with an 1.4inch TFT 135x240 screen, mic, rtc, battery 120mah, acceleramator (IMU), and more. All on top of a Pico ESP32.


Let’s see… 37*7 is 259 LEDs which if you mount 6 around 1, would be slightly less than 4 inches wide/tall… Not nearly as big as the Polar Star but about the same number of pixels…

@jeff Did you ever do anything with these?

I just got a shipment I ordered, 25 of them (they had a sale again), and now imagining what to do with them… they will tile well (I bought enough to do a Catan style layout - 19 in a circular hex shape, plus some extras), or maybe a soccer ball of 20 (aka a truncated icosahedron). 37x19 = 703 pixels… in maybe 6 inches round? A soccer ball would under 4 inches round, for 740 pixels, but of course it would have big holes where the pentagons would go.

I need to print some mounting stuff, thinking about using something like these:
which would let me adjust and reconnect as desired.

@Scruffynerf I have 6 right next to me but haven’t had time to do anything with them yet! Lemme know what you find in terms of power, timing, color, etc!

1 Like

Recording this so I don’t forget this great resource:

Loaded in JavaScript-y code for hex coordinates

Which thankfully, PB will handle as a XYZ done right, making yet another coordinate system it can do.

1 Like

Hooked them up. Pretty fun - I think we have some Halloween possibilities.

  • 37 SK6812 in GRB order
  • 3535 package, 5mm pitch
  • 12ma per color / 36ma per pixel


function (pixelCount) {
  var map = []
  const hexCount = 1 // However many you're hooking up; z will consistent per panel, as if in layers.
  const hexRows = [4, 5, 6, 7, 6, 5, 4]
  Array.from({ length: hexCount }, (element, hexIndex) => {
    hexRows.forEach((cols, row) => {
      for (i = 0; i < cols; i++) {
        y = row;
        xOffset = 7 - cols * .5; // 7->0, 4->1.5
        x = xOffset + i;
        map.push([x, y, hexIndex]);

  return map

WOW @Scruffynerf that is an very cool website. Now I’m curious if someone has made stl plans for a isohedron using 3d printing as the holder and those 37 led hex panels inserted into the faces. That would make a rad hanging “disco ball”.

Just finally got a chance to set up a map on a hex, and play with it… and discovered that lots of our existing patterns, by assuming a height/width constant ratio, don’t work on layouts like this (and likely others, like circles). For example, @zranger’s Doom Fire wont light up the highest row, no matter how high I turn up the flames. Very noticeable given the small number of pixels and odd layout.

One more item in the ‘make all the patterns work on all maps’ todo. Likely this means adjusting all of those hidden assumptions, so that irregular layouts don’t break.

For example, @zranger’s Doom Fire wont light up the highest row, no matter how high I turn up the flames. Very noticeable given the small number of pixels and odd layout.

That’s no aspect ratio problem – that’s a bug! Thank you for noticing it!

On line 129:
for (var y = 1; y < lastRow; y++) {
change that sneaky, evil “1” to a zero and it should do the right thing.


The most common thing I find myself fixing with the same 2D code on different installations is the overall aspect ratio. We can kludge it at the map level with phantom map pixels, or in patterns with the new transform APIs.

The second most common thing is scale, and this is only doable via transform APIs. By scale I mean that a pattern might look good in the default units on an 8x8, but extend that to a 24x24 and you might want to transform world units from 0…1 into 0-3 (or into -1 to 2 to keep something symmetric centered). Unfortunately that means editing every pattern on a board.


If @wizard adds some mapper level scale/transforms, might help…

But honestly I don’t mind tweaking on a per pattern basis for a given layout. That’s one reason I often add sliders, just because adjustments can do anything from minor tweaks to major changes depending on the slider.

But I’d like at least a good standard to set:
Most patterns works in 1D
Most patterns works in 2D not dependent on width/height, etc. Map of X,Y is enough
Some patterns work in 3D, and if not, they default to a decent 2D fallback, vice versa 3D patterns should have a good 2D and 1D fallback.


On sale right now for Halloween (by the time you get it, it’ll be Xmas though) for just under $5 a piece. Lots of other neat stuff on sale too.

1 Like