9171| 15
|
用Arduino自制一个只有表针,没有表盘的“空心时钟” |
本帖最后由 RRoy 于 2022-6-1 16:15 编辑 祝大家端午节快乐! 这周我们来一起看看如何用Arduino自制一个只有表针,没有表盘的“空心时钟”。 看起来还是挺炫酷的,再放几张网友们参照教程做的图欣赏一下: ▲ 视频演示材料 准备
这个时钟可以用大多数常见的200 x 200mm打印机打印,除了装饰部分(index.stl,203 x 203mm)。 文章最后还有一个缩小小的版本(85%)。 文中所有的涉及的STL文件可以到文末下载。 第1步:打印零件
相关STL文件可以到文末下载。 第2步:组装蜗杆传动系统
如果你想把整个电路封闭起来放到盒子里,可以打印零件做个盒子(相关文件放在文末)。 然后用两个2毫米的自攻螺钉来组装起来。 第7步:程序 将代码闪到Arduino上。把代码上传到Arduino IDE 上。 如果你的电机跑错了方向,请修改代码中的数字顺序: int port[4] = {4, 5, 6, 7}; 改为 int port[4] = {7, 6, 5, 4}; 这上面的数字和Arduino Nano的针脚有关(D4-D7)。 完整代码如下: // 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 * 110 / 8 = 56320 #define STEPS_PER_ROTATION 56320 // 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] = {4, 5, 6, 7}; // 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, seq[phase]); } delay(dt); if(dt > delaytime) dt--; } // power cut for(i = 0; i < 4; i++) { digitalWrite(port, 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 rotate(pos - prev_pos); prev_pos = pos; } 第8步:测试和调整
你还可以在https://www.thingiverse.com/thing:5142739 的评论中找到一些有用的信息。 第9步:调整时间
STL文件同样打包好了放在下面的链接里。 原文链接:https://www.instructables.com/Hollow-Clock-3/ 原项目作者: shiura 译文首发:DF创客社区 开源项目,转载请务必注明项目出处与原作者信息 |
1.49 MB, 下载次数: 3389
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed