Version 2 of this Grid for LED strips w/ clock example
29.09.2019 - Update to Sketch v5
See Sketch section for details
Comparison old vs. v2
- More LEDs than before (18x6 vs 16x5, XT 27x6 vs 24x5) (108 vs 80 LEDs, XT 162 vs 120 LEDs)
- Parts designed to use less material and print way faster
- Less screws required (10-14 screws vs. > 20 screws before)
- Bigger electronics case (fits stuff up to 40mm x 70mm x 15mm)
- Easier to build
- If used as a clock, there's now room for 24h format on the base version with 18x6 leds
Pictures for size comparison are in the gallery (old grid 16x5 vs 18x6 and 24x5 vs 27x6).
There's two software sketches provided, v4 is based on the Lazy Grid Clock / 7 Segment Retro Clock. So it now has the same basic functions. As electronics are the same you might want to check out the other things for additional information.
This one shows the basics of how to use the grid. It's a regular "horizontal zig zag" starting with data in at the bottom left corner (x/y 0,0).
The clock sketch as it can be seen in the pictures.
- 12/24h format selectable
- different color palettes/modes
- ldr support (automatic brightness reduction)
- settings stored to eeprom
See "Sketch" section for usage details.
To build the grid with 108 leds/2 modules you will need:
- 2x GCv2_Grid_v1.STL
- 2x GCv2_Grid_Base_v1.STL
- 2x GCv2_Front_v1.STL
- 1x GCv2_Elec_Case_v1.STL
- 1x GCv2_Feet_v1.STL
- 2x GCv2_Cable-Cover_v1.STL
Electronics / Other:
- 1x Arduino (Nano or Pro Mini, case fits both)
(Note: Pro Mini 5V, not 3.3V. ATmega328P, 168P only have 1k SRAM)
- 108x WS2812(B) LEDs (60 leds/m)
- 1x resistor (300-500 ohms, I'm using 330)
- 1x RTC module (DS3231)
- 2x push buttons (6mm x 6mm)
- 1 USB wire to connect the clock/grid later to a power source
(Because of voltage drop I don't recommend wires longer than 2m - 3m max.)
- 10x M3 screws, length anywhere between 7mm - 11mm (I've used m3x10 completely)
- Diffusive material (copy paper, inkjet film, whatever. Size is 155mm x 107mm per front part)
If you'd like to build the 162 leds/3 modules version from the pictures, you'll need additionally:
- 1x GCv2_Grid_v1.STL
- 1x GCv2_Grid_Base_v1.STL
- 1x GCv2_Front_XT_v1.STL
- 1x GCv2_XT-Connector_v1.STL
Electronics / Other:
- 54x WS2812(B) LEDs (60 leds/m)
- 4x M3 screws, length anywhere between 7mm - 11mm
- Working Arduino IDE including the used libraries
- Basic knowledge of what you're doing...
Strip cutouts in the base parts are 12.25mm wide. So other strips like APA102 should be usable as long as strip thickness between leds is <= 1mm. IP67/IP65 coated/tubed strips won't work, they're 3mm-4mm thick.
This thing is meant for people who played around a bit with a few WS2812 leds to gather some experience and who are now looking for an easy way to get a working grid. If you're totally new to this you might want to take a look at Adafruits Uberguide or other similar stuff (FastLED user groups) first.
Because of that I won't go into details about power usage/selecting the right wire gauges and so on. If you're going to use the grid for one of your own projects you should know about these things (like about different voltage levels on a esp8266 and the complications that may arise from this). Or why you should keep the power wire short (voltage drop).
The provided sketch is limited to 5V/750mA. Regarding of the diffusive material you chose you might want to raise this. Paper blocks way more light than inkjet film for example. Using AWG24/AWG22 (0.21mm² - 0.33mm²) personally I wouldn't go over 2A - 3A and consider adding one or two capacitors to the strip/arduino.
Walls are multiples of 0.6mm. Use an extrusion width of 0.6mm to print these parts, otherwise you'll get much weaker parts and almost double the print times (nozzle diameter != extrusion width!). Use 2 shells/perimeters so 2.4mm thick walls will get printed without the need for infill.
At 60mm/s - 65mm/s (0.25mm layer height) none of the bigger parts (front, electronics case) should take longer than 60-90 minutes. The other parts (grid, base, feet) take somewhere about 20-40 minutes.
The grid itself can also be printed in vase mode. I've tried to reduce the amount of retractions as far as possible, so this is a very easy print. Unless you suffer from bad 1st layer adhesion, but I suggest getting problems fixed before starting a project... ;)
How to reduce print time from 7+ hours to < 60 minutes for the grid can be seen at the bottom, there's a video. I didn't want to put the video link here because it would end up as the second thumbnail in the gallery...
The STLs include smaller parts. The front includes 1 little clamp to connect front parts together (so you get 2 when printing 2 front parts). The front_xt part has 2 clamps within that you'll need.
Remember: Pictures can be opened in a new tab for full resolution!
Adding a 3rd (XT) module in the center should be self explainatory, so this documentation shows building the grid with 2 modules.
Let's break down the process of building this thing into three parts:
A: The LED grid, B: Front/Main Assembly, C: Electronics
A: The LED grid
- Put base parts next to each other as close as possible
- Glue in the led strips, starting with data in on the lower left corner
This will later be X/Y 0,0 - it is extremely important to start there for the sketches to work!
- Connect strips to a horizontal zig zag
- Connect power wire/USB wire to led strip (top left)
- Connect wires for Arduino to bottom left corner (data in, +5v, gnd)
Keep the resistor close to the led strip on the data line here
- Put grids on bases
They don't need to clip together strongly, just to hold everything in place while mounting the grid inside the front parts later
Sometimes people get confused by how the data flows from start to end when cutting a led strip like this. In the end it's all the same, we just insert some wires at certain points to be able to mount the strip in this way.
Think of it like cars in a traffic jam on a long road (strip) vs. people standing in a line in a theme park (zig zag). Lots of people all going into the same direction, it just looks a bit different...
This should explain it pretty clearly:
Horizontal Zig Zag: First LED at bottom left corner, last one at top left corner
At the end of Part A you should have something like this:
A.6 - Grid finished. Data In/+5V/GND to Arduino on the bottom left, USB power top left
B: Front/Main Assembly
- Connect front parts using the little clamps
- Put diffusive material (paper, inkjet film, ...) in the front parts
- Flip grid/base parts and put them inside the front parts
- Put on Electronics case, cable covers and feet
- Put in all screws except the two for the electronics case cover
This is to keep everything in place while doing the rest. If you don't fix everything now you might move the diffusive material accidentally.
- This is a good point to put some shrink tubing over the wires coming from the grid to the Arduino
- I recommend routing the USB wire around the pole as some kind of strain relief
While putting everything together you should take care of the alignment of the grid inside the front parts. DataIn/Power on the right side, buttons pointing upwards. Miss this one and you end up with Data In on the top right corner and mirrored digits... ;)
Afterwards you should have something like this in front of you:
B.6 - Parts mounted so far, only electronics left.
B.7 - USB wire routed around pole to avoid accidentally ripping it right off of the grid.
- Connect two buttons to Arduino - D3 (blue), D4 (purple), GND
- Connect LED strip to Arduino - DataIn (yellow), +5V, GND
When doing this I suggest adding 2 wires to +5V and GND on the Arduino which will then be used to power the RTC.
- Connect RTC to Arduino - SDA / A4 (white), SCL / A5 (gray), +5V, GND
- Upload sketch to Arduino
- Put buttons and electronics into the case
- Put cover and screws on electronics case
C.5 - Hold buttons in place...
...and fix them using the little bars.
As before, one sketch for both versions. Just change RESX from 18 to 27 when building the big version.
Removed(!) periodic palette cycling
I don't know if anyone used it at all. But I think this should be tied to a certain time to swap colors each hour or so. I couldn't care less so I removed it. And removing is a great feature, isn't it?
Many, many cleanups
Setup routine and so on have been changed quite a lot. Added some comments here and there.
Brightness is now stored within an array (min/med/max) and eeprom reading/setting has been improved.
improved LDR support
There's some new variables on top of the sketch which allow you to adjust your LDR readout more easily. Additionally you can define upper/lower limits to turn it dark/bright exactly when you like.
Greatly improved color handling
Some palettes got some minor changes. All in all they're close to the old ones but I tried to get rid of some color flickering because of non ideal color combinations at start/end of palettes.
Also color flickering/steps on low brightness settings have been greatly improved.
Added some default color corrections/color temperature settings (great improvement on blue tones using ws2812b).
Added some palettes using "HTMLColorCodes", which should make it easy to create own gradients without caring about R/G/B values.
- Some kind of debug interface
Using the serial console and having dbg=true; you can use your number pad to send buttons and/or change different variables. This makes creating own palettes and especially testing much more comfortable :D
Power limit is set to 750mA and one of the first parameters inside the sketch. Adjust this according to the model you're using and how much your wiring/power supply can handle.
Sketch_v4 supports 18x6 and 27x6 grids. Adjust RESX/RESY inside the INO sketch accordingly.
- short press: Select brightness level
- long press (3 sec): Switch color mode (gradient / solid)
- short press: Select color palette
- long press (3 sec): Switch 12h / 24h mode
Press Button A and Button B at the same time to enter setup mode. There you can use Button A to change values (hours/minutes) and Button B to proceed to the next (hours first, minutes, done).
If setup is run in 12h mode a dot in the upper left corner will indicate AM, lower left corner will indicate PM.
Short explanation of why I keep telling people about extrusion width/line width of some of my parts here... ;)
While designing this I decided to disassemble my old grid clock things. These pictures are just here to give you an idea of how to do it if you wanted to convert to v2.
Old grid disassembled (16x5)
Strips cut in the center to avoid redoing the zig zag-wiring.
Wiring done, power wires moved from top right to top left.
Everything inside v2 (XT, 3 modules). Actually this was the first one I finished and the one I took the pictures from in the gallery.