Introduction: Mechanical 7-Segment Digital Clock

About: I am interested in designing something curious but functional. Please take a look at my summary page, https://shiura.com/dfab/index-en.html

3D-printed Mechanical 7-segment digital clock

  • Each display unit is versatile and can be used separately
  • Fast and smooth motion

Supplies

You need

Step 1: Assemble Display Units

Assemble single unit of the mechanical 7-segment display

  1. Print parts with supplied posture. Only cam.stl needs support (otherwise not necessary). Print two copies of seg-bl, seg-tc and seg-tl STL files per one unit.
  2. Paint visible surfaces of segments with different color. I used white paint for the parts with black PLA material.
  3. Clean holes for axes with 2mm drill.
  4. Attach three horizontal segments (seg-tc and seg-c) with 32mm steel wire. To avoid the steel wire shafts slipped out, slightly bend the shaft (at the center, or one end)
  5. Attach the cam shaft with 104mm steel wire. Please make sure which is top or bottom (bottom surface is usually smoother than top).
  6. Attach four vertical segments (seg-tl, seg-bl) with 104mm shafts
  7. Check smooth rotation and proper digit display
  8. Attach SG-90 type servo motor and servo-gear to the frame

Step 2: Arrange Four Units

  1. Print base.stl and two copies of retainer.stl with supplied posture. No supports neeeded.
  2. Attach four display units to the base with 8 2mm tapping screws.
  3. Attach Ks0360 sensor shield for micro:bit with 4 2mm tapping screws.
  4. Connect wires of servos to the pins of sensor shield.
  5. Insert micro:bit to the sensor shield.
  6. (optional) Print two back-cover.stl and set them. They are snap fit.

Step 3: Adjustment

Match the pin connection map

  • Edit the array named servoPin[] to match to the physical connection.

Servo position adjustment

  1. Roughly adjust the position of servo gear so that the display can show 0-9 in a full range of servo rotation.
  2. visit the site at https://makecode.microbit.org/ and upload check-offset2.hex (code to adjust the servo position).
  3. Fill the "offmap" table with zeros
  4. Flash the code to micro:bit
  5. Find the best offset values for the all combinations of 4 units and 10 digits.
  • A/B button increases / decreases the offset value.
  • Press A and B buttons simultaneously to increase the number (0-9) to be shown.
  1. Set the found offset values to the source code and check again. Copy the offmap

Clock code

  1. upload clock.hex to micro:bit site.
  2. Copy the offmap table from check-offset2.hex to clock.hex.
  3. Flash the code to micro:bit
  4. Operation
  • A button increases hour value
  • B button increases minute value