Lenticular Clock

by mosivers in Circuits > Clocks

39643 Views, 118 Favorites, 0 Comments

Lenticular Clock

IMG_0101_edited.JPG
IMG_0102_edited.JPG
MVI_0092-ezgif.com-video-to-gif-converter.gif
Lenticular Clock

After making my Moire Clock a got interested in a very similar effect: lenticular animations. You probably have seen this effect before, e.g. on post cards. I remember having a ruler in primary school with a picture of dinosaurs on it that changed depending on the viewing angle.

Lenticular animations are based on several interlaced pictures viewed through an array of cylindrical lenses. The individual pictures can then be distinguished by changing the viewing angle. My idea was to create a clock that uses lenticular animations to display the time.

Supplies

  • 4pcs SG92R 270deg servo motors (actually you only need 2 pcs of 270deg servos, the other 2 pcs can be 180deg)
  • PCA9685 PWM driver board
  • Wemos D1 mini ESP8266
  • 20 LPI lenticular sheet A4
  • printable transparent self-adhesive foil
  • color laser/inkjet printer
  • 3D printer

Choosing the Right LPI

IMG_20240721_162140.jpg

The lenticular sheet is characterized by its number of lenses per inch (LPI). I ordered sheets with 60, 40 and 20 LPI. Higher LPI gives you a better resolution but you need to print thinner lines and its more difficult to align the sheet correctly on top of the print. Since the clock animations will contain up to 6 frames I found that they are only clearly separated with 20 LPI.

I used a 20 LPI sheet with a large viewing angle of 54 deg that is well suited for displaying animations.

LPI Calibration

IMG_20240721_164544.jpg

Because of manufacturing tolerances of the lenticular sheet and also tolerances of your printer you need to determine the exact LPI value that you will use for interlacing. There are several softwares that can generate calibration sheets. I tried out the software from 3Dependable and fPitch. For some reason though the calibration did not work very well and I ended up generating the final print with different LPI values and then chose the one which gave the best results when placed below my lenticular sheet.

Creating the Lenticular Print

IMG_20240705_143435.jpg

There are several softwares that can be used for interlacing the images, I used grape which is freeware. At first, I created pictures of each individual digit from 0 to 9 all with the same size of 52.5x30mm. I used a different color for each digit which helps to distinguish them more clearly and also has the advantage of being able to participate in the "colors of the rainbow" contest on instructables ;-)

Before interlacing I had to rotate the pictures by 90deg because grape can only create animations that work by tilting the print horizontally.

Interlaced images were created out of the following groups of digits

  • 0-2 -> ten hours
  • 0-4 -> hours + minutes
  • 5-9 -> hours + minutes
  • 0-5 -> ten minutes

I mirrored the interlaced images and then printed them on self-adhesive transparent foil so that I can attach them to the back of the lenticular sheet. I also covered the print with another layer of self-adhesive foil so that the ink does not rub off.

The interlaced pictures and individual frames are available on my github.

Attaching the Print to the Lenticular Sheet

IMG_20240711_133342.jpg
MVI_0077-ezgif.com-video-to-gif-converter.gif

The interlaced pictures created with grape have some aligned marks at the border which greatly held to align the print correctly. In order to be able to adjust the self-adhesive foil I sprayed the back of the lenticular sheet with soapy water. After everything is aligned corectly you can squeeze out the water below the foil.

I then cut the lenticular sheet with a box cutter removing the alignment marks. This turned out to be quite tedious since the lenticular sheet is 2mm thick and takes a long time to cut through.

3D Printing

IMG_20240713_190304.jpg
IMG_20240715_183454.jpg

I 3D printed holders for the lenticual sheets from white PLA. The sheet can be slided into the holder and the holder is later attached to the servo motors. The holder for the hours and minutes have the sheets with the digits 0-4 on the front and 5-9 on the backside.

The housing for the clock was also 3D printed from white PLA and houses the electronics and servo motors.

All stl files are available on my github.

Assembly

IMG_20240716_230908.jpg
IMG_20240720_123956.jpg
IMG_20240720_155543.jpg
VID_20240720_170124-ezgif.com-video-to-gif-converter.gif

The assembly of the clock is rathter easy.

  1. attach servos to housing
  2. press fit digit holder to servos. Ten hours go to upper left, hours to upper right, ten minutes to lower left, minutes to lower right
  3. mount PCA9685 and Wemos board. The Wemos needs to be fixed with hot glue
  4. Connect cables between Wemos and PCA9685
  5. D1 -> SCL
  6. D2 -> SDA
  7. 5V -> VCC and V+
  8. GND -> GND
  9. attach servos to CH 0-3 on the PCA9685 board
  10. fix servo cables with zip ties on the back of the housing
  11. attach housing lid

For the final touch I added another lenticular animation to the bottom of the housing that switches between to texts and was created using a sheet with 40LPI.

Code

The code was written in the Arduino IDE and is available on my github. At first, the positions of the motors that correspond to the correct tilt angle for each digit need to be specified in the servo.h file. For that I viewed the clock from a defined angle and controlled the servo positions via the serial monitor in the IDE.

When the code is first uploaded, the ESP8266 opens an access point and lets you enter your wifi credentials. It then connects to your local wifi and synchronizes the time via NTP.

The clock will show the time in 24h format with the top row showing the hours and bottom row showing the minutes.