Introduction: Time Slider
A digital clock using sliding grids to show or hide the segments of the digits.
Each minute the sliders move in a synchronized manner to show the current time.
The clock is powered by an Arduino Mega and it uses a DS3231 RTC to keep the time. Each digit has two sliding grids which are affected by small stepper motors.
I designed it with Autodesk Fusion 360 and 3D printed it on a Prusa MK3S.
Step 1: Parts List
- Arduino Mega
- DS3231 Real Time Clock Module
- Eight stepper motors 28BYJ-48 with ULN2003 Driver
- 82 cm Wooden strip 19x19mm
- Steel Wire 1m
- 46 Washer head screw 4.2 x 14 mm
- 16 Button head screw and nut M4 x 10
- 18 self tapping screws M3 x 5
- Dupont Wires
- 5V power cable with DC plug 5.5x2.1mm
- Power supply 5V/2A
- Power supply for the Arduino Mega
Step 2: 3D Printed Parts
3d Printed Parts:
- One A1 - A8
- Three B1 and B2
- Two C1
- Four Digit
- Two Dot
- Four Grid
- Eight Gear
- Four L1 - L4
- Four R1 - R3
- Twenty Rackjoin
- Twenty-eight Thinjoin
- One ArduinoMount
- One DS3231Mount
- Two ULN2003Mount
I printed it in PLA. Layer height: 0.2mm, Infill 15%
I used Brim on parts A, L and R to avoid warping.
I used approximatey 2kg black, and 350g red PLA.
Attachments
Step 3: Electronic Schematics
Step 4: Assembly
- Attach the plates B1 and B2 on the body A1 - A8. Use Washer head screws.
- Attach C1 onto A1+A5 and A4+A8. Use Washer head screws.
- Install the wooden strip with Washer head screws.
- Fasten the steel wire to the wooden strip with Washer head screws. Adjust the length of the steel wire so that the clock hangs flat to the wall and does not tilt outwards.
- Glue Digit, Dot and Grid.
- Assemble L1-L4. Apply some glue to the L-pieces and attach the Rackjoin. Make sure it alligns with the rack.
- Glue on Thinjoin. Make sure the rack is perfectly straight so it will slide well in the tracks.
- Repeat above steps with R1-R3.
- Test the sliders in the tracks. Make sure they slides well. If not, fix it by sanding it. And maybe lubricate with silicone spray.
- Attach the stepper motors with M4 screws.
- Attach the gears.
- Glue Arduinomount. It is higher on one side - the Arduino Mega is mounted tilted so that the usb connector will be accessible. Place the lowest side towards the center of the clock.
- Glue ULN2003Mount and DS3231Mount.
- Mount the Arduino Mega and the ULN2003 drivers with small M3 screws.
- Attach DS3231 (snap fit).
- Connect the wires from the motors to the ULN2003 drivers.
- Connect Dupont cables between the ULN2003 drivers and the Arduino Mega as defined in the source code.
- Make a harness connector, connecting all the + pins on the ULN2003 drivers to the positive DC connector power cable. GND on the Arduino Mega and all the - pins on the ULN2003 drivers to the negative DC connector power cable.
- Connect DS3231 SDA, SCL, 5V and GND to SDA, SCL, 5V and GND on the Arduino Mega.
Step 5: Software
Arduino libraries:
If you want a 12 hour display (why would anyone want that on a digital clock) set the variable twelve_hour_mode to true
Attachments
Step 6: Operation
- Slide the grids into the tracks so that the gears engage.
- Turn on the power.
- Enjoy the show.
Judges Prize in the
Clocks Contest
66 Comments
Question 24 days ago
Can someone please tell me the motors sequence while powering up - Thank you so much!
Answer 24 days ago
The motors are driven up in sequence from Left to Right for a pre-determined time and they come to rest on a dead-stop. After all eight motors are 'homed' the correct time will be shown by the sliders moving down to their correct positions. I hope this helps.
Reply 20 days ago
Thanks, Its all sorted!
I have just added mine next to you!
Regards
Erik Hoffman
Reply 8 days ago
Any reply??????????????????????????????????????????????
Question 4 weeks ago
Is there anyway to add pin 13 to have it blinking every one second - I could not add it to the sketch, it will not blink!!!
I would be very grateful!
Erik hoffman
Answer 8 days ago
Any reply??????????????????????????????????????????????
2 months ago
Hans, your clock project is an impressive example of functional art! I'm adding this to my "Make It" queue. I have an Arduino Mega 2560 reserved for it. I'll print and gather up the rest of the BOM and get to it. I have the will I just need the time.
Reply 18 days ago
I pushed the sketch out to the Arduino. One more step done.
I printed two parts today. I'm excited to get this fun clock built.
Question 2 months ago
Ca you please share a photo of your solution to connect the power lines for al of the drivers ?
Answer 4 weeks ago
See the photos - use pos and neg rail as illustrated
Reply 4 weeks ago
So you are using some kind of shield with the arduino mega right ?
Reply 4 weeks ago
Yes, but I made it myself, I dont like to use the the single wire - you can buy the 4 and 2 wire connectors from here
https://thepihut.com/products/4-pin-female-cable
I use long pin connector and bend them so l did not use the 3D printout of the Arduino
I also used the battery backed up mini RTC as you can see in the photo
Buy it from here
https://www.amazon.co.uk/dp/B09SCR93VZ?psc=1&ref=p...
Reply 4 weeks ago
Thanks for the additional pictures.
I have a more clear ideia how did yo managed the electronics part of the project.
Question 4 weeks ago
Can you add a pulse every second from the RTC to pin 13 please?
That would be very helpfull and surely will be appreciate!
Thanks, Erik
Question 6 weeks ago
What an amazing clock a real piece of engineering art!
I would love to build this clock but looking at the parts there is 1 part R1 that will not fit on my 220x220mm printer bed.
Option 1
Is there a 2 part version of this part that can fixed with your Rackjoin and Thinjoin ?
Option 2
I have split the R1 part in Meshmixer (see image) and could pin and glue the thicker track side but the thin edge of the digit cover slide may be too weak without support.
Is there a gap at the rear of the digit slide to the digits to glue a thin say 1mm joining plate?
Question 2 months ago
Great project. How to set the entry time? Is that somewhere in the code?
Answer 2 months ago
You set the time on the DS3231. It will hold the correct time while the battery lasts.
I am doing this project but I plan to add a Wemos to get the time from a NTP server and send it to mega via Softwareserial library
Reply 7 weeks ago
So it takes system time from the computer? What about the change of summer and winter time? Will it always need to be replayed?
Reply 7 weeks ago
There is a program that you run first on the arduino where you set the time on the DS3231. Once is set the DS3231 will keep the time. The you run the clock program where now it will get the time from the DS3231.
Regarding summer winter time you can set a small routine on the main program to make the necessary corrections. The DS3231 will not take the summer winter time change.
2 months ago
I do not have the knowledge to be able to make this project. Does anyone knows if this can be purchased somewhere? I went to the YouTube video to see if the poster ahd a link to buy one but I didn't see anything of that sort.