Lazy Grid Clock V2




Introduction: Lazy Grid Clock V2

Lazy Grid Clock v2

Welcome to LGCv2, a 7x11 led matrix using a single LED strip.

Update - 2020/06/02
Added draft of sketch v6 which can be compiled for nodeMCU/ESP8266. It's been added to Step 6. For details/information please have a look at Step 11 from my S7ripClock.

The idea behind this thing was to avoid soldering multiple led strips like in a classic matrix. For this to work there's 6 leds "wasted" but it makes building the grid much faster.

Basically this is the same as my previous Lazy Grid Clock - it's now finally updated to provide an easier build and use less materials, like screws. As there are some remixes/modifications out there I kept orientation/start point of the grid, so the sketches can be used on LGCv1 and v2.

The Arduino sketch is based on the S7ripClock. So while looking somewhat different the instructions/features from the video are valid for this also.

If you're looking for a bigger grid and don't care about doing some solder work you might want to have a look at my "Grid Clock v2":

Step 1: STL Files and Printing Instructions

Walls are always multiples of 0.5mm, so I strongly suggest using and extrusion width/line width of 0.5mm (no, not recommending a 0.5mm nozzle here!).

At 60mm/s (everything, including outlines/solid infill) it takes about 7.5 hours to print all the parts needed. There's no tricky parts like steep overhangs or bridging, no needs for supports, so it is a fairly easy print.

Some parts only have a single retract per layer (diff grid), others do have some specific cuts within their first 1-2 layers. This is to make printing even easier by avoiding dozens of retracts on the first layer.

The biggest part is 199.0mm x 142.0mm x 23.50mm so it should be printable on common models without trouble.

Recommended print settings:

0.25mm layer height
0.50mm extrusion width/line width
2 shells/perimeters

Step 2: Overview / Notes

Most of the documentation will be pictures only. This is using the same electronics as my "S7ripClock" and this is very close to the old "Lazy Grid Clock". I strongly recommend having a look at the S7ripClock when building this, I've reused the electronics from that one for the purpose of the pictures here... Schematics are exactly the same, only difference being the electronics case mirrored on the LGCv2.


If you have a close look at the pictures later you'll notice I haven't connected the Arduino to the LED strip. That's because I've published quite some things so far and don't want to waste an Arduino on each just for taking the pictures.

Step 3: Required Parts

3D printed parts:




LGCv2_Elec-Case.STL (2x button bars included)

LGCv2_Elec-Covers.STL (2x cable covers included)



= 11 parts total

I recommend printing all except the case/stand using black material to avoid light leaks. The case can be printed from a different color but it should be a opaque one (I chose silver/anthracite).

Other parts:

1x Arduino Pro Mini (5v, 328p) or Arduino Nano

83x WS2812B LEDs, 60/meter strips, 5V, each led individually addressable, 10mm wide(IP65/67, coated/rubberized ones do not fit!)

1x DS3231 RTC module (ZS-042, DS3231 for Pi or similar)

2x 6x6mm push buttons (button length doesn't really matter, 3-6mm will work well)

1x USB cable / USB Wall Charger (500mA min, 1A recommended)

5x M3 screws (length 8mm - 12mm, doesn't really matter. 8mm recommended)

Some wires (AWG 26 min. recommended)

2x 120mm x 188mm diffusive material (I've been using Folex Ink Jet Film, very thin paper or similar will work also)

You will need a working Arduino IDE to upload the sketch. Also you should know about the difference between compiling and uploading a sketch or installing the required libraries. If you're completely new to leds/arduino I recommend working through something like Adafruits Neopixel Guide first.


The sketch is using the FastLED library. So other LEDs can be used but this instructable will not include such modifications. Same goes for using an ESP8266 without logic level shifters and WS2812B.
For RTC communications the DS3232 library by JChristensen is used. So other models are supported (DS1307), I just didn't come across one without massive drift yet... ^^

Step 4: Building the Grid

Orientation is important. So keep an eye for the "x" inside the case, which marks the lower right corner/data in when building this.

When finished and seen from the front this will be x/y 0,0 in the lower left corner.

Start with the led strip/data in as shown. Note the fins on the led frame, there is none on the top of the part.

I highly recommend not pre-cutting a piece of 83 leds. Check where you have to bend the strip and make sure there's no solder joints exactly there.

Add three wires to the start of the strip (+5V / red, GND / black, Data In / green). The USB/power wire is connected to the end of the strip.

Step 5: Assembly

Now it's time to assemble all the parts...

Start by placing the first sheet of diffusive material inside the case and putting the diffuser grid on top, orientation doesn't matter on this one.

Next add the second sheet and put the led grid on top of it. Make sure the fins slide in properly, data in is in the lower right corner and that's where the "x" inside the frame is located.

Route wires as shown (upper left screw hole has thinner walls to extend space for usb wire) and put the cover on ("x" on the right side).


After taking all the pictures I decided to modify the cable covers a bit. They're now less obstrusive and orientation should be more obvious.

Step 6: Electronics / Sketch

Electronics are pretty easy. There's only 2 push buttons, power and the led strip to connect. Please have a look at the S7ripClock for detailed pictures and schematics. Wire colors are the same as can be seen in the pictures.

The sketch is also based on the S7ripClock, so it's offering exactly the same features. According to your choice of power supply you might want to raise the default power limitation of 500mA on top of the sketch.

By changing "enableDot" to "true" you can enable a blinking dot in the center of the grid, if you'd like to.

Basic usage instructions:

Button A: Select brightness

Button A (long press): Switch color mode (per digit/per led)

Button B: Select color palette

Button B (long press): Switch 12h / 24h mode

Button A + B: Enter setup

While in Setup: ButtonB -> Increase +1, ButtonA -> Accept/Next

LED Strip Speed Challenge

First Prize in the
LED Strip Speed Challenge

8 People Made This Project!


  • Water Speed Challenge

    Water Speed Challenge
  • DIY Summer Camp Contest

    DIY Summer Camp Contest
  • Pets Challenge

    Pets Challenge



8 weeks ago

From 9:00 am to 9:59 am the LED strip flickers. I think it is a code issue. Do you have any solution? Thanks in advance!
I'm using Wemos D1 Mini without RTC module.

From 10:00 to another day 8:59 everythings works fine, there is this issue only from 9 to 10 am. I'm using 24h display mode.

Check out these videos:


Reply 6 weeks ago

Erratic flickering like that most of the time is caused by the data line. Either a loose connection, too long/thin wire and/or a wrong dimensioned resistor. Interestingly some people had success in fixing this by adding a small "delay(1);" at the end of the main loop(). Others said "upgrading libraries" did fix the problem - but didn't tell exactly what library and what version.
I did test different versions of some libraries but couldn't get the leds to flicker so far.


6 months ago

Thanks for sharing this nice project!
I've installed the LDR in a voltage divider with a 10K resistor towards GND, the output voltage made sense, but the LDR debug mode delivered way to low values.
I think that I found a bug in the new v6 firmware (LGCv2_7x11_v6-pre.ino): The pin of the LDR (pinLDR) is initialized as pinMode OUTPUT, which leads to very low input values. Changing it to INPUT solves this problem :)


Reply 5 months ago


first of all, yes: You're right. Setting the pin to output isn't really the way to go. But this didn't happen with v6, it's been all the way like that since v4 when I first uploaded a sketch containing ldr support...

So I tried to figure out why it did work for so many people over the past without anything mentioned like that before...

I tested on a nodeMCU v3, different Pro Mini clones, a Nano and a genuine UNO. No matter if I set the pin to input or output, the values from the LDR always turn out exactly the same range/sensitivity.

As I don't set the output port to high I somehow was expecting a behavior like that.

Few days later I was sent the slightly modified sketch by another user and noticed his high ldrFactor (10), so I had to think of your post immediately. It turned out he was not aware of the differences between esp8266/arduinos here and so he connected the ldr to +5v. While the resistor will keep the ADC input safe from overvoltage it's only rated at 3.3v max on nodeMCUs (ESP8266 chips can only handle 0-1v, most dev boards have some resistors onboard to make 0-3.3v possible).

You didn't mention what you were using... so is it possible you connected it to a nodeMCU and +5v like he did?

If updating the sketch I will probably remove/change that pin definition. But so far I`m still struggling to understand why input/output did make a difference for you and not for me on any of the boards I've tested... ^^



7 months ago

Great job, nice clock!
Beïng not familiar with electronics..........
I wonder, if you could realise a clock (9 rows, 7 columns) wich I made working in Excel.

I can send you the working excel clock if you like in a PM.
The green leds represent the hours, the red one is the actual hour
The orange leds reprent the minutes in an grid of 9 leds (like a 9 dot dice)
The white leds represent the 10 minutes blocks, 1 lit = 10 minutes, 2 lit = 20 minutes past
The blue leds represent the 10 second blocks, 1 lit = between 10 and 20 seconds past

Or in a 8x8 led matrix

Reply 6 months ago

this grid is using 7x11 "pixels" (x/y). So there's just enough space to make the 7x9 one fit horizontally, vertically there would be two blank lines. But I probably won't build a smaller version of this - it wouldn't really work for other display modes.

If you're looking for a 8x8 matrix you might want to have a look at ws2812 matrices, they're cheap these days and can be bought easily on amz/ebay.

And here's the modified sketch running on this thing. Setup is the same as before (using 4 digits), color palettes are disabled for this mode.

Here's a timelapse from 10:58:35 - 11:13:35


Reply 6 months ago

Wow, you made it!
Thank you! Also for the code.
I think you did a great job and I am very happy to see it working.
I will give it a try next summer.


1 year ago

Really clean, well made design. Nice work!


1 year ago

Really an great project! I love projects that are designed to keep things simple, and the ways this is designed around those led strips is awesome! I'm working on something similar yet totally different as well. I didn't read through everything entirely, but it does seem that the data pins will "short" each other if someone removes the film on the back of the LEDs, so it might be useful to mention that.

Penolopy Bulnick
Penolopy Bulnick

1 year ago

This is really neat! It looks like the video is for your other project :)


Reply 1 year ago

The video is valid for many different clocks/grids I've built as they're based on the same software sketch. ;)

Penolopy Bulnick
Penolopy Bulnick

Reply 1 year ago

Gotcha! I got a little confused when I saw the same video in the other Instructable and just wanted to make sure :)