How to Build a Giant Hidden Shelf Edge Clock

We had a large space on part of our living room wall for which we could never find the right 'thing' to hang on it. After trying for several years we decided to make something of our own. This turned out rather well (in our opinion) so I turned it into a project on my Youtube channel and a written a guide which you're reading right now! 


It's a giant digital LED clock discreetly hidden in the edges of a geometric shelving system. It also included integrated LED downlighters to show off your favorite items on the shelves.


As the lighting is LED (using WS2821B 'Neopixels') you can choose your own colours - both for the clock face and downlighters. A discreet photoresistor is hidden in the top right corner which dims the LED's when the ambient light levels drop - great for evening ambiance in any room.


DISCORD server: https://discord.gg/EhqqePPcKk


Supplies:

You will need some supplies to build one of your own. Below are links to where you can find the parts on Amazon.

■ An Arduino Nano(x1): https://geni.us/ArduinoNanoV3
■ A 5m roll of WS2812B LEDS which has 60 LED’s a meter: https://geni.us/5mWS2812B60m
■ A Photosensitive resistor module: https://geni.us/PhotoresistorModule
■ Some Hookup wire - ideally three different colours: https://geni.us/22AWGWire
■ A couple of 470 Ohm resistors: https://geni.us/Ufa2s
■ A couple of electric terminal block strips - each 5 blocks long: https://geni.us/TerminalBlocks
■ No 8 wood screws: https://geni.us/No8Screw
■ A 5v power supply with screw terminals: https://geni.us/PowerSupplyTerm
■ Some thicker twin core cable 
■ Some filament for the 3D printed parts: https://geni.us/PLAFilament
■ Wood infused PLA filament: https://geni.us/WoodPLA
■ Wooden backboard at least 112 x 39cm the one I used was 138 x 60cm (this will give the finished project a 10cm border around the outside).

Code and other downloads


Code for the project can be found on its Github page: https://github.com/DIY-Machines/DigitalClockSmartShelving


3D printed parts and wiring diagrams can be downloaded from here: https://www.prusaprinters.org/prints/94364


Drawing for CNC drilling of the backboard (if you have access to a CNC machine or know someone else who does):

https://www.etsy.com/uk/DIYMachines/listing/1081760909


DISCORD server: https://discord.gg/EhqqePPcKk


Wiring Diagrams

Click on an image to see a larger version.


FAQ's

  • I get an error when uploading: ' exit status 1 'digitZero' was not declared in this scope...'

    There are two files on the Github page for this project. Both need to be opened as tabs in the IDE when uplaoding. 

    First open 'Shelf_Edge_Clock_V1.ino' in the IDE then click 'Sketch' from the menu bar, followed by 'Add file'. Choose the 'Digits.ino' file.

  • How do I change the number of LEDs used in each segment?

    The file 'Digits.ino' explains to the system which LEDs need to light up to create each number (0 through to 9) on the right-most digit. This is expressed as follows for the number one:


    void digitOne(int offset, int colour){

        stripClock.fill(colour, (0 + offset), 9);

        stripClock.fill(colour, (36 + offset), 9);

    }


    In this function we have a line for each continouse run of LEDs which are swithced on. These lines start with 'stripClock.fill'.

    This is followed by the variable 'colour' which controls the colour of the LED.

    The first number represents the first LED to switch on (remembering we count from zero and the order is as you have soldered them in series). There is another variable 'offset' which can be ignored for now followed by another number ('9' in the above example) which says how many LED's to light in a continouse run from this first one. 


    If you we're using 18 LED's per segment it might look like this for you:


    void digitOne(int offset, int colour){

        stripClock.fill(colour, (0 + offset), 18);

        stripClock.fill(colour, (72 + offset), 18);

    }


    You also need to adjust the offset value as found in the main program on lines; 185, 197 and 211.


    These values should represnt how many LED's come before the first LED which forms  the next 'digit' on the shelf clock.

  • How did you print the double coloured sleeves?

    I printed two layers of white (at a 0.2mm layer height per layer) before changing to the wooden filament.

    In Prusaslicer you can prompt the printer to chnage filament as explained here by Prusa: https://youtu.be/bzf20FxsN2Q?t=361

  • How do I make a 24 hour version?

    I would recommend taking look at the great work done by Florian here: https://github.com/florianL21/LED-ClockShelf 


Comments

By Lewis February 24, 2026
In this video, I’ll show you how to set up sensorless homing using a TMC2209 stepper driver — no mechanical limit switches required! Perfect for 3D printers, CNC machines, robotics, and other DIY electronics projects. I’ll guide you through the wiring, Arduino code, and how to tune StallGuard for accurate, reliable homing. Whether you’re building a CoreXY, a custom motion control system, or just want to learn more about stepper motor drivers, this is a great place to start. Let’s build smarter! Why would we want to use sensorless homing? Well first the Pros…. There’s no need for extra mounts, additional components or running long dangling cables to one or both ends of the carriage or other moving component. And there are always cons, so in this case you’ll need a stallguard-capable driver (they cost a little more and are only manufactured by Trinamic) and accuracy isn’t great at slow speeds.
By Lewis February 1, 2026
I Recreated the Stranger Things Walkie-Talkies (THEY ACTUALLY WORK)
By Lewis December 17, 2025
How to build your own colour e-ink paper display smart dashboard. Powered by Raspberry Pi Zero 2 W you can show weather, photos, calendars, GitHub stats and more.
A resin 3D printer with an orange cover and a screen, beside a bottle of resin and a black base.
By Lewis November 28, 2025
PioCreat HALOT-X1 10.1” 16K Resin Printer Review
By Lewis February 3, 2025
In this guide, I’ll show you how to use the HC-SR04 ultrasonic sensor to measure distances and detect objects using an Arduino or another microcontroller.
By Lewis November 7, 2024
Elegoo Mars 5 Ultra - 7" 9k AI Resin Printer
By Lewis June 27, 2024
3D Print and add some Resin to create some amazing pieces of stained 'glass'.
By Lewis Aburrow May 1, 2024
My Patreons sent in some questions. Because I'd asked them to do this - I thought I'd better write out answers....
By Lewis Aburrow May 1, 2024
CRAZY COASTERS with a TWIST! Laser or 3D Print some DIY Magic.
By Lewis April 2, 2024
KINETIC COASTERS with a TWIST! Laser or 3D Printable