Glow-In-Dark Plot Clock

by TucksProjects Mar 21, 2018
Download All Files

Thing Apps Enabled

Please Login to Comment

Hello,I want to ask two questions. The first question is whether the // length of arms in the code refers to the length of four rockers. Why is the length of arm1 different from that of arm2 and the length of arm3 and arm4 different? The second question is how the // origin points of left and right servo in the code determines its coordinates.

I forked and modified "goebish" code from a comment below.

Does time and date just like "goebish" but reverted to the DS1307 clock from the OP project.
The calibration in this code is much easier to do. I couldn't understand how to adjust the calibration values using the "square" calibration from the OP code.
Few other minor enhancements.

I'm new to Ardunio, but would it be possible to convert this to a countdown clock - e.g. when the button is pressed, it shows the number of days until Christmas? If so, I'd appreciate any pointers towards where I should start to look! :)

Wow such a smart and well thought out project, Thanks for sharing.
Definitely going on the to do list.

Thanks again :)

This may be the coolest thing I have ever seen....

Will audrino nano work? with DS3231 real time clock ( library change) ?

Mine was doing the same thing - I think the servos are mixed up. I changed it in the code and that seemed to fix it - #define SERVOPINLEFT 9

define SERVOPINRIGHT 10 Mine calibrated, then draws the time once but then when the button is pushed again, it does some stuff in the bottom and LED blinks - any suggestions folks?

I made this a while and I love it. but now I want to make it just say 5535 when I press the button. any ideas on how to do that? I'm not a coder.

Which fasteners and how many of them should we use? The description says (M3 * 8mm) X 9, but I've counted 17 screw holes (4x for Adruino Uno, 2x for the RTC clock, 5x for arms/servos, 4x for the front panel and 2x for the top cover). Also the video tutorial mentions that arms shoud use M3 * 6mm.

It would help greatly to have a separate table listing all needed screws list with type, counts and purpose. Perhaps this (or similar) set should also be included into the shopping list: https://www.aliexpress.com/item//1846309705.html. Thank you.

I was able to successfully calibrate the clock. It draws a perfect square around the perimeter of the sticker. But when I remark the calibration mode and upload the sketch I press the button and the led moves to the center of the sticker and thats all. It never even tries to draw out the time. Any ideas??

Im still kinda new to 3d printing so this is probably a noobish question. When i load up the model in simplified 3d it doesn't have threads for the hex screws to go in. What am i doing wrong?

Threads usually don't work well with 3D printed objects so I didn't include them. The idea is, since the plastic is soft, the machine screws will self tap their own threads. It has worked pretty well for me so far.

Hey Tucker, Thanks for the info i'll give it a go. :-)

Hello! I did well, everyone was surprised and shocked)). Can you make them work like a cuckoo every hour?

Hello I was wondering if you put uv led behind the glow paper so before it start writing the next time to make it glow so the first disappear and the new time will come whit stronger glow behind the lower glow will it work ( sorry for my bad english )

I haven't watched the assembly videos yet. But I see that the Arduino board doesn't align with the mounting holes because the port holes for the USB and power have very tight tolerances. I don't think it's the printer because I've printed other stuff much smaller that fit pretty snugly based on my designs.

I had to scrape around the ports to remove at least 1 mm of material before the Arduino would align with the mounting holes.

Has anyone had similar issues? If there is indeed a tolerance problem, a remix could be avoided if the original could be modified and republished.


Hey, so I've gotten everything done with clock, except when the time comes to screw the arms onto the servos... It doesn't work. The screw just moves while both arms just stay still. Nothing wrong with wiring have checked like 6 times. So how do I fix it?

Usually a servo will come with servo.horns that fit it. You can glue the servo horn to the arms to make sure it moves properly. Let me know if that works!

Thanks for sharing!
I think I've seen this on hackaday or another website a few months ago but I didn't noticed it was available here with instructions.
Well, another one on my todo list, I only need the GITD sticker and an UV LED :)

Any one having issues with the clock running fast? Mine gains about a min every 2 days.

That's because the DS1307 RTC relies on an inaccurate external crystal oscillator, better use a DS3231 instead, it has a builtin temperature compensated oscillator, but it's more expensive.

Got the new clock board. Need to figure out what libraries to add to set the time and then what to change in the original code.

in case you're still looking for it, I've just built one and I (slightly) modified the code to use a DS3231 RTC:
It also displays the date with a long press of the button.

Use the sample code from the DS3231 library (link below) to set the time first.

tried and got this: Arduino: 1.8.5 (Windows 10), Board: "Arduino/Genuino Uno"

C:\Users\Brian\Desktop\glowclock\glowclock.ino: In function 'void setup()':

glowclock:102: error: 'class DS3231' has no member named 'begin'



C:\Users\Brian\Desktop\glowclock\glowclock.ino: In function 'void loop()':

glowclock:144: error: 'RTCDateTime' was not declared in this scope

         RTCDateTime tm;


glowclock:145: error: 'tm' was not declared in this scope

         tm = RTC.getDateTime();


glowclock:145: error: 'class DS3231' has no member named 'getDateTime'

         tm = RTC.getDateTime();


exit status 1
'class DS3231' has no member named 'begin'

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

oops, I'm using a different library actually:
Remove the one you've installed then copy this one to your libraries folder then it should work.

use the "DS3231_simple" example to set the time

Don't know what I'm doing wrong. lots of these types of errors: warning: deprecated conversion from string constant to 'char*'

Tried again, got no errors, but the button does nothing now.

Check the pin assignment, I had to remap some:
Led = D13
L servo = D6
R servo = D5
Button = D7

thanks. restored the original PINs and it works. How do i enable 12 hour time?

uncomment line 10:
define OPTION_12_HOUR //12 or 24 hour time

line 12. I did that and then has to replace all instances of tm.Hour with tm.hour and all is well.
Thanks again.

You can use this lib: https://github.com/NorthernWidget/DS3231
It has sample code to set/read the time, it can even retrieve actual temperature.

Mine has gained 5 minutes over a month.

I wouldn't worry about it. By my calculations, in 12 years it will be the correct time again. (if you do 12h format otherwise it will be 24 years)

did you improve the code or change the time.h thing?

All the Changes are in the readme and in the code notations. Cleaned up code so it complies faster, fixed calibration and added an option for a date button.

Enjoyed building 2 of these with my son. He edited the code to draw faster. Also working on a second button to display day and date.

im having trouble compiling the code, i didnt change anything on it.

See my note below, might help.

In your parts list you link to a latching push button switch. Should this be a momentary switch?
When left on, my clock will keep rewriting the time over and over until you turn the switch off.

Is there anyway to change the home position, i.e. the position it goes to after it gets done plotting the time? it's too low right now. The calibration is good but the home position is so low that on occasion it can't go left to start the first number so I will a have to push up on the LED to get it to go left.

If anyone is having trouble with "Set Time" and compiling error try changing Time.h to TimeLib.h

Thanks, we figured this out as well.

I've got my clock calibrated, thanks for everyone's help! The thing that helped the most was screwing the arms to the horns. For some reason, I thought it would be easier to calibrate if I left that for last. Turns out that there are different size horns that ship with the cheap 9g servos from China. I had a smaller horn that wasn't fitting tightly into the 3D printed grooves, creating a calibration challenge.
I'd like to expand functionality by adding a tilt switch (double bead type) and have it display a different message when it is turned upside down. The only help I need is with the coordinates to create a 26 character alphabet, and a simple function call to summon the letters. I'd be fine with having a "switch" statement with 26 cases, similar to how the time is displayed. Any thoughts?

You mention 5MM UV LEDs in the video, but you provided a link to 3MM LEDs which are the ones I ordered. Is the link wrong, or the 5MM description in the video wrong? Thanks for the design!

Updated. Sorry about that...3mm should work as long as you use some glue to keep it in. Hope that doesn't set you too far back in your project :/.

Good luck


Thank you so much for sharing this! It was a very enjoyable project and I learned so much. You're right. Calibration isn't fun!

I've got all the parts, and I'm ready to start building! In your video I noticed two things: It appears the servo on the left of your schematic is the right servo (pin 9) and the one on the right is the left servo (pin 10) is this correct? What does the "DS" pin (black wire coming from real time clock) do? Why isn't it on the schematic?
Thanks, I hope to have mine working soon!

Oh, I just completed mine and only looked at the schematic very seldom -- following the excellent video instead. Amazingly all the wiring worked but it was very clear the servos weren't moving the expected way. I just swapped the pin assignment in the program rather than re-enter the box and revisit my horrible wiring mess. In other words, don't worry much about which servo goes into 9 and which to 10. Although I believe you do have it right.

Yes, I ended up switching my pin 9 and 10 in the sketch. And I figured out what the DS pin is on the real time clock I think it stands for Dallas Semiconductor, the maker of a compatible 3-pin thermometer that has holes on the board but usually isn't fitted. I've got mine telling the time, but barely legible since it's not calibrated yet.

Oh shoot. I'll switch those two in the sketch. Sorry for any frustration this caused.. I made a video on calibration that may help you.


I just built this today, according to your Fritzing, and the LEFT and RIGHT servo pins are reversed. Not sure why you were told to change them, but they were right in the first place :)

Thanks Tucker. The pin 9 and 10 change is not a big deal but the harder part was changing the header name from time.h to TimeLib.h. It refused to compile unless I did that for both the time setting sketch and your sketch.

Hmm strange. I've added include TimeLib.h to the code. Hopefully that helps

I think he' referring to the setTime example from the DS1307RTC library. It seems the stock code uses #include , but it should be #include . Took me a while to figure it out.

I used a different RTC that didn't have a DS pin, so I can't tell you with certainty -- but I'm guessing that this is a Device Select pin and isn't needed for this application, and so is left unconnected.

You said the time is only visible for a few seconds in daylight. I'm thinking of taking this to my office which has a lot of flourescent lights. Would I be able to even see the time? If not, I have an idea, but I'll see what you have to say about my question before I propose an idea.

The daylight visibility was a problem for me, so I used UV sensitive PLA instead. Now it works perfect in bright light (but isn't readable in the dark anymore).


Glow-In-Dark Plot Clock
by JohnFen

I brought mine to the office and it worked great. As long as its not in direct sunlight you should have no problem seeing the time :)

Great... thanks for doing this project and the support you have been providing. Hope to start printing parts this week.

Beautiful, beautiful, beautiful.

This is amazing, i love working with electronics and i would love to build one, but i am worried about all the programming, is it as hard as it looks?

I've included the Arduino code in the files. You still need to calibrate your servos and I explain that process in the video tutorial posted. You can do it!

v1.1 - I'm getting redefinition compile errors.

Do you have the arduino code?

Yes, they're included in the files above

Thank you, any advice on how to calibrate it? Im having this issue: https://www.youtube.com/watch?v=34tj6yZoX4I

Wow! That looks great! I wasn't expecting anyone to build it so quick. I'm going to be working on the calibration and code portion of the video right now so I will try and have it uploaded by the end of the day

I've also built one - I'll look out for your second video to set it up :D

Ok, I've added a calibration video and updated the Arduino code. https://www.youtube.com/watch?v=4viW9ADqX2w

Let me know if that works for you or if you have any suggestions/requests. Good luck

At the end of the video you refer to another video which explains calibration and any other steps needed to get this to work. I assume that would include setting the time on the RTC. Where can I find that info?

Hi, I've added the pt.2 of the video so it should come up at the end now

You gave me a little orgasm.

Looks great, I have a few questions about building it:
Can the voltage regulator on the Arduino handle the motor current, or should I supply 5V through the USB and use the raw power pin to power the motors? It appears you're not using a current limiting resistor on the LED, and it's receiving a full 5V from the Arduino, is that right?

The Arduino was able to supply the power for the servos through the pins without trouble. I didn't use a resistor on my LED because it was rated for up to 5V. A led that is only rated for 3.3V should have a resistor

I'm loving this project. Such an original idea and spot on execution. Well done! Thanks for making the design available.

how much time the time is visible?
and also can i use simple, leds ? not UV

It depends on the lighting. In daylight it will fade in seconds. At night it can take 10 minutes for the glow to fully fade. I would strongly suggest using UV 405nm LEDs. They will glow much better

This is genius!!!
THX 4 sharing