Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用Arduino IDE(集成开发环境)来编写、编译和上传代码到Arduino板上。Arduino还有一个丰富的库和社区,你可以利用它们来扩展Arduino的功能和学习Arduino的知识。
Arduino的特点是:
1、开放源码:Arduino的硬件和软件都是开放源码的,你可以自由地修改、复制和分享它们。
2、易用:Arduino的硬件和软件都是为初学者和非专业人士设计的,你可以轻松地上手和使用它们。
3、便宜:Arduino的硬件和软件都是非常经济的,你可以用很低的成本来实现你的想法。
4、多样:Arduino有多种型号和版本,你可以根据你的需要和喜好来选择合适的Arduino板。
5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。


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



步骤1:打印和组装零件
按照提供的姿势打印所有零件。无需支撑。“washer1.stl”和“washer2.stl”是可选零件,用于调整齿轮的间隙。
在此设计中,时针和分针的角度由磁力控制,而非机械控制。设置时间非常容易。用一定长度的螺丝固定时针和分针。插入磁铁并测试它们如何与重力对齐。组装前,请确保所有轴都能正常旋转。
















步骤2:电路元件和印刷电路板
我们需要一个 Arduino Nano、一个步进电机、一个驱动器和一些电线。但在这种情况下,电路可能有点复杂,我想让它看起来更专业、更简洁。所以 我设计了一块定制的印刷电路板,创建了一个 Gerber 文件,并从 PCBWay订购了它。
所需组件:
三个 8mm x 3mm 钕磁铁
28BYJ-48步进电机及驱动板(ULN2003)
Arduino Nano 板
BOM 清单和 Gerber 文件可在 PCBWay 项目页面上找到。
为了有效利用空间,请拆下步进电机头并按照所示的颜色顺序将电线焊接到电路板上。




步骤3:源代码
打开共享源代码,选择Arduino Nano开发板上传代码。如果电机转动方向相反,请修改代码中的电机连接顺序。
// Please tune the following value if the clock gains or loses.
// Theoretically, standard of this value is 60000.
#define MILLIS_PER_MIN 60000 // milliseconds per a minute
// Motor and clock parameters
// 4096 * 90 / 12 = 30720
#define STEPS_PER_ROTATION 30720 // steps for a full turn of minute rotor
// wait for a single step of stepper
int delaytime = 2;
// ports used to control the stepper motor
// if your motor rotate to the opposite direction,
// change the order as {4, 5, 6, 7};
int port[4] = {7, 6, 5, 4};
// sequence of stepper motor control
int seq[8][4] = {
{ LOW, HIGH, HIGH, LOW},
{ LOW, LOW, HIGH, LOW},
{ LOW, LOW, HIGH, HIGH},
{ LOW, LOW, LOW, HIGH},
{ HIGH, LOW, LOW, HIGH},
{ HIGH, LOW, LOW, LOW},
{ HIGH, HIGH, LOW, LOW},
{ LOW, HIGH, LOW, LOW}
};
void rotate(int step) {
static int phase = 0;
int i, j;
int delta = (step > 0) ? 1 : 7;
int dt = 20;
step = (step > 0) ? step : -step;
for(j = 0; j < step; j++) {
phase = (phase + delta) % 8;
for(i = 0; i < 4; i++) {
digitalWrite(port[i], seq[phase][i]);
}
delay(dt);
if(dt > delaytime) dt--;
}
// power cut
for(i = 0; i < 4; i++) {
digitalWrite(port[i], LOW);
}
}
void setup() {
pinMode(port[0], OUTPUT);
pinMode(port[1], OUTPUT);
pinMode(port[2], OUTPUT);
pinMode(port[3], OUTPUT);
rotate(-20); // for approach run
rotate(20); // approach run without heavy load
rotate(STEPS_PER_ROTATION / 60);
}
void loop() {
static long prev_min = 0, prev_pos = 0;
long min;
static long pos;
min = millis() / MILLIS_PER_MIN;
if(prev_min == min) {
return;
}
prev_min = min;
pos = (STEPS_PER_ROTATION * min) / 60;
rotate(-20); // for approach run
rotate(20); // approach run without heavy load
if(pos - prev_pos > 0) {
rotate(pos - prev_pos);
}
prev_pos = pos;
}
板上的跳线接头用于通过 Type-C USB 端口为 Arduino Nano 和电机提供 5 伏电源。






又一个项目结束了,首先感谢PCBWay的支持。如果您喜欢这个项目,可以关注并点赞。感谢您的阅读。
附录
项目链接:https://www.pcbway.com/project/shareproject/3D_Hollow_Clock_Controller_Board_Arduino_Nano_Stepper_Motor_and_ULN2003_Driver_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.amazonaws.com/web/24/04/08/0037494941168.ino
3D文件:https://www.thingiverse.com/thing:5636482


评论