22浏览
查看: 22|回复: 6

[项目] 【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)

[复制链接]
本帖最后由 驴友花雕 于 2025-5-27 17:22 编辑

Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用Arduino IDE(集成开发环境)来编写、编译和上传代码到Arduino板上。Arduino还有一个丰富的库和社区,你可以利用它们来扩展Arduino的功能和学习Arduino的知识。

Arduino的特点是:
1、开放源码:Arduino的硬件和软件都是开放源码的,你可以自由地修改、复制和分享它们。
2、易用:Arduino的硬件和软件都是为初学者和非专业人士设计的,你可以轻松地上手和使用它们。
3、便宜:Arduino的硬件和软件都是非常经济的,你可以用很低的成本来实现你的想法。
4、多样:Arduino有多种型号和版本,你可以根据你的需要和喜好来选择合适的Arduino板。
5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图1

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图2

驴友花雕  中级技神
 楼主|

发表于 昨天 17:23

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)

大家好,在这个项目中,我将向大家展示如何制作这款外观精美的3D打印镂空时钟。几天前我在 Thingiverse上看到了这个项目 ,觉得非常有趣,所以我制作了一个视频,展示了我如何使用3D打印机打印和组装所有部件。


【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图2

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图1

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图3

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 17:55

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)

步骤1:打印和组装零件

按照提供的姿势打印所有零件。无需支撑。“washer1.stl”和“washer2.stl”是可选零件,用于调整齿轮的间隙。

在此设计中,时针和分针的角度由磁力控制,而非机械控制。设置时间非常容易。用一定长度的螺丝固定时针和分针。插入磁铁并测试它们如何与重力对齐。组装前,请确保所有轴都能正常旋转。

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图1

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图3

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图2

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图4

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图5

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图6

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图7

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图8

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图9

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图10

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图11

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图12

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图14

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图13

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图15

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图17

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图16

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 17:57

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)

步骤2:电路元件和印刷电路板

我们需要一个 Arduino Nano、一个步进电机、一个驱动器和一些电线。但在这种情况下,电路可能有点复杂,我想让它看起来更专业、更简洁。所以 我设计了一块定制的印刷电路板,创建了一个 Gerber 文件,并从 PCBWay订购了它。

所需组件:
三个 8mm x 3mm 钕磁铁
28BYJ-48步进电机及驱动板(ULN2003)
Arduino Nano 板
BOM 清单和 Gerber 文件可在 PCBWay 项目页面上找到。

为了有效利用空间,请拆下步进电机头并按照所示的颜色顺序将电线焊接到电路板上。

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图1

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图2

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图3

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图4

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图5

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图6

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 18:03

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)

步骤3:源代码

打开共享源代码,选择Arduino Nano开发板上传代码。如果电机转动方向相反,请修改代码中的电机连接顺序。

  1. // Please tune the following value if the clock gains or loses.
  2. // Theoretically, standard of this value is 60000.
  3. #define MILLIS_PER_MIN 60000 // milliseconds per a minute
  4. // Motor and clock parameters
  5. // 4096 * 90 / 12 = 30720
  6. #define STEPS_PER_ROTATION 30720 // steps for a full turn of minute rotor
  7. // wait for a single step of stepper
  8. int delaytime = 2;
  9. // ports used to control the stepper motor
  10. // if your motor rotate to the opposite direction,
  11. // change the order as {4, 5, 6, 7};
  12. int port[4] = {7, 6, 5, 4};
  13. // sequence of stepper motor control
  14. int seq[8][4] = {
  15.   {  LOW, HIGH, HIGH,  LOW},
  16.   {  LOW,  LOW, HIGH,  LOW},
  17.   {  LOW,  LOW, HIGH, HIGH},
  18.   {  LOW,  LOW,  LOW, HIGH},
  19.   { HIGH,  LOW,  LOW, HIGH},
  20.   { HIGH,  LOW,  LOW,  LOW},
  21.   { HIGH, HIGH,  LOW,  LOW},
  22.   {  LOW, HIGH,  LOW,  LOW}
  23. };
  24. void rotate(int step) {
  25.   static int phase = 0;
  26.   int i, j;
  27.   int delta = (step > 0) ? 1 : 7;
  28.   int dt = 20;
  29.   step = (step > 0) ? step : -step;
  30.   for(j = 0; j < step; j++) {
  31.     phase = (phase + delta) % 8;
  32.     for(i = 0; i < 4; i++) {
  33.       digitalWrite(port[i], seq[phase][i]);
  34.     }
  35.     delay(dt);
  36.     if(dt > delaytime) dt--;
  37.   }
  38.   // power cut
  39.   for(i = 0; i < 4; i++) {
  40.     digitalWrite(port[i], LOW);
  41.   }
  42. }
  43. void setup() {
  44.   pinMode(port[0], OUTPUT);
  45.   pinMode(port[1], OUTPUT);
  46.   pinMode(port[2], OUTPUT);
  47.   pinMode(port[3], OUTPUT);
  48.   rotate(-20); // for approach run
  49.   rotate(20); // approach run without heavy load
  50.   rotate(STEPS_PER_ROTATION / 60);
  51. }
  52. void loop() {
  53.   static long prev_min = 0, prev_pos = 0;
  54.   long min;
  55.   static long pos;
  56.   
  57.   min = millis() / MILLIS_PER_MIN;
  58.   if(prev_min == min) {
  59.     return;
  60.   }
  61.   prev_min = min;
  62.   pos = (STEPS_PER_ROTATION * min) / 60;
  63.   rotate(-20); // for approach run
  64.   rotate(20); // approach run without heavy load
  65.   if(pos - prev_pos > 0) {
  66.     rotate(pos - prev_pos);
  67.   }
  68.   prev_pos = pos;
  69. }
复制代码




回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 18:04

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)

板上的跳线接头用于通过 Type-C USB 端口为 Arduino Nano 和电机提供 5 伏电源。

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图1

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图2

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图3

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图4

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图5

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图6


又一个项目结束了,首先感谢PCBWay的支持。如果您喜欢这个项目,可以关注并点赞。感谢您的阅读。

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 18:11

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)

本帖最后由 驴友花雕 于 2025-5-28 04:55 编辑

附录
项目链接:https://www.pcbway.com/project/s ... river_9507c8ea.html
项目作者:土耳其 梅尔特·基利奇 MertArduino
项目视频(2分钟):https://www.youtube.com/watch?v=0vr2Qu_AF7U
https://www.youtube.com/watch?v=hRpLiRoMx34&t=2s
项目代码:https://pcbwayfile.s3.us-west-2. ... 8/0037494941168.ino
3D文件:https://www.thingiverse.com/thing:5636482

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图1

【Arduino 动手做】制作一个简单的 3D 空心时钟(V4版本)图2

Hollow Clock 4.zip

12.04 MB, 阅读权限: 20, 下载次数: 0

附件.zip

11.27 KB, 阅读权限: 20, 下载次数: 0

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail