Introduction: Photochromic & Glow-in-the-Dark Clock

About: I am a physicist, part time maker and electronics enthusiast. My projects revolve mainly around daily-use items, toys and decoration with a focus on unconventional mechanisms and high standard of design.

This clock uses a custom built 4-digit 7-segment display made from UV LEDs. In front of the display a screen is placed that consists either of phosphorescent ("glow-in-the-dark") or photochromic material. A push button on the top lights up the UV display which then illuminates the screen for a few seconds so that it starts glowing or changes color which then slowly fades away.

This project was inspired by the awesome Glow-In-The-Dark Plot Clock by Tucker Shannon. When I rebuilt his project I gave it a little twist by replacing the glow-in-the-dark screen with one 3D printed from photochromic filament which changes color when exposed to UV light. In the meanwhile I saw that other people had the same idea (see e.g. here). Although the mechanical plotting mechanism of the clock is certainly awesome it has the disadvantage that the numbers come out a bit crooked so I was thinking of another way to make the numbers look more clean. At first I tried to replace the backlight of an LCD display with UV LEDs and then put a photochromic/glow-in-the-dark screen on top. However, it turned out that the intensity transmitted through the LCD was very low. After that I decided to build a 4-digit 7-segment display using UV LEDs to illuminate the screen which gave much better results.



    • DS3231 RTC module (
    • Arduino Nano (
    • UV color changing filament (
    • 96x39x1 mm Glow-in-the-Dark sticker (
    • 96x39x1 mm transparent plastic sheet (
    • MT3608 DC DC step up module (
    • 30 pcs 5 mm UV LED (
    • TM1637 4-digit 7-segment display (
    • 12x12 mm momentary push button (


    • 3D printer
    • hot glue gun
    • soldering iron
    • multimeter

    Step 1: 3D Printing

    The following stl files have to be 3D printed. The housing parts were printed from black PLA while for the 4digits.stl file I used white PLA. The screen was printed from violet UV color changing filament. The soldering jig can be printed from any material.

    Step 2: Desoldering 7-segment Display

    I only needed the I2C backpack of the 4-digit 7-segment display so the first step was to desolder the display from the module.

    Step 3: Prepare Protoype PCB

    Next I cut out a piece from a prototype PCB for the UV LEDs and marked the places where I wanted to place the LEDs according to the soldering jig. On the bottom part I later attached male pin headers for connection to the I2C backpack.

    Step 4: Soldering LEDs and Pin Headers

    I then soldered all UV LEDs to the prototype PCB and also attached the male pin headers. I used the soldering jig for aligment of the UV LEDs.

    Step 5: Wiring LEDs

    Next, the LEDs were wired according to the attached schematic which copies the layout of the 4-digit display that was desoldered from the I2C back pack. For the connections of the individual segments of a single digit I used silvered copper wire while the other connections were made with isolated wire. The whole thing looks quite messy in the end.

    Step 6: Attach I2C Backpack

    Next, I attached the prototype PCB to the I2C backpack. While I soldered both parts directly together it would have been wiser to use female headers on the backpack so that both parts can be plugged and unplugged.

    For testing I connected to back to an arduino nano and uploaded the TM167test example from the TM1637 library.

    Step 7: Completing 4-digit Display

    Next the 3D printed 4digits.stl part gets attached on top of the LEDs. To diffuse the light of the LEDs I filled up the segments with hot glue and sealed them with Kapton tape until the glue was hardened. This left me with a nice custom 4-digit 7-segment display.

    Step 8: Glow-in-the-Dark Screen

    At first I tried to also 3D print this screen from Glow-in-the-Dark filament. However, it turned out that it diffuses the light too much, so the numbers appear kind of washed out. Therefore, I decided to use a sticker which was attached to a transparent plastic screen. Most plastics are still transparent enough for the ~400 nm light of the LEDs.

    Step 9: Mount Components in Housing

    Finally the components can be mounted into the 3D printed housing using again lots of hot glue.

    Before using the DS3231 module it is wise to disable the battery recharging circuit. Only after having built several clocks with this module I stumbled upon a thread explaining that VCC is connected to the coin cell battery. That means when you power the module via VCC voltage is constantly applied to the battery. Since the module comes with non-rechargable CR2032 batteries this is not a good idea. You can easily disable the recharging circuit by desoldering the diode or the resistor marked in the attached picture.

    Step 10: Connect Modules

    Next, the components were wired using Dupont cables according to the attached schematic. The step up module was used to increase the supply voltage for the I2C backpack to 7 V since I wanted to make UV LEDs as bright as possible. The voltage applied to the LEDs is VCC-2 V, i.e. 5 V, while this is higher than the recommended forward voltage of the LEDs (3 V) they should be able to handle it since they will not be lit constantly.

    Step 11: Upload Code

    At first, I set the current time in the RTC module. For this I just uploaded the SetTime example of the DS1307RTC library. Afterwards, the attached code for the clock can be uploaded. When pressing the button, the display will light up for 5 seconds and show the current time.

    Step 12: Finished Clock

    Here are some more picture of the finished clock. During daytime the photochromic screen can be used while during night time it can be exchanged with the Glow-in-the-Dark screen.

    Overall I am quite happy with the result although the numbers on both screesn could still be brighter. Another possibility I may want to try is mixing glow-in-the-dark powder with epoxy and then using it to fill up the display segments instead of hot glue. Also it would be nice to use a professional PCB with SMD LEDs instead of the 5 mm LEDs.

    Colors of the Rainbow Contest

    Participated in the
    Colors of the Rainbow Contest