这是一个特别的数字时钟,它通过滑动网格来显示或隐藏数字的笔段。
每过一分钟,这些滑块就会同步移动,来显示当前的时间。
整个时钟由一块 Arduino Mega 主板驱动,并使用 DS3231 实时时钟模块(RTC)来确保时间的准确性。每个数字都配有两个滑动网格,由小型步进电机负责驱动。

第1步:零件清单


需要打印的零件清单:
- A1 - A8 各一个
- B1 和 B2 各三个
- C1 两个
- Digit 四个
- Dot 两个
- Grid 四个
- Gear 八个
- L1 - L4 各一个
- R1 - R3 各一个
- Rackjoin 二十个
- Thinjoin 二十八个
- ArduinoMount (Arduino支架) 一个
- DS3231Mount (DS3231支架) 一个
- ULN2003Mount (ULN2003支架) 两个
作者使用的是 PLA 材料进行打印。打印参数:层高 0.2毫米,填充率 15%。
为了防止翘边,在打印 A、L 和 R 部件时开启了“Brim”(底层扩边)功能。
整个项目大约用掉了2公斤黑色和350克红色的 PLA 材料。
STL模型文件可以在文末打包下载。
第3步:电路图

第4步:组装



整理好3D打印件。
将 B1 和 B2 板固定到 A1 - A8 的主体框架上,使用大扁头螺丝。
将 C1 板固定到 A1+A5 和 A4+A8 组合件上,使用大扁头螺丝。
用大扁头螺丝安装木条。
用大扁头螺丝将钢丝固定在木条上。调整钢丝的长度,确保时钟能平整地贴在墙上,不会向前倾斜。



将 Digit
(数字)、Dot
(点)和 Grid
(网格)部件粘合在一起。
组装 L1-L4。在 L 形部件上涂一些胶水,然后粘上 Rackjoin
部件。确保它与齿条完全对齐。
粘上 Thinjoin
部件。请务必确保整个齿条是笔直的,这样才能在轨道中顺畅滑动。
对 R1-R3 部件重复以上步骤。
测试滑块在轨道中的滑动情况,确保它们可以顺畅滑动。如果滑动不畅,用砂纸打磨一下。也可以喷一些硅基润滑剂。



用 M4 螺丝安装步进电机。
安装齿轮。


粘合 Arduinomount
(Arduino支架)。这个支架一边高一边低——这样安装的 Arduino Mega 主板是倾斜的,方便插拔USB接口。记得把较低的一侧朝向时钟中心。
粘合 ULN2003Mount
(ULN2003支架) 和 DS3231Mount
(DS3231支架)。
用 M3 小螺丝安装 Arduino Mega 主板和 ULN2003 驱动板。
安装 DS3231 模块(卡扣式安装)。
将电机的电线连接到 ULN2003 驱动板上。
根据源代码中的引脚定义,用杜邦线连接 ULN2003 驱动板和 Arduino Mega 主板。
制作一个电源线束:把所有 ULN2003 驱动板上的 +
引脚连接到 DC 电源线的正极;将 Arduino Mega 主板的 GND
和所有 ULN2003 驱动板上的 -
引脚连接到 DC 电源线的负极。
将 DS3231 模块的 SDA, SCL, 5V 和 GND 引脚连接到 Arduino Mega 主板上对应的 SDA, SCL, 5V 和 GND 引脚。
第5步:软件部分
所需的 Arduino 库:
Accelstepper库:http://airspayce.com/mikem/arduino/AccelStepper/classAccelStepper.html
DS3231库:http://www.rinkydinkelectronics.com/library.php?id=73
如果你想要12小时制显示(真有人会给数字时钟用这种模式吗?),请将代码中的变量 twelve_hour_mode
的值设为 true
。

代码文件可以在文末打包下载。
第6步:运行

将组装好的网格滑块装入轨道,并确保齿条与齿轮啮合到位。
接通电源。
搞定!