一段时间后,时钟算法落后几分钟
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一段时间后,时钟算法落后几分钟相关的知识,希望对你有一定的参考价值。
我正在尝试使用Arduino制作一个数字时钟,但几个小时后它就落后了几分钟。
我在4ms之后增加了辅助值,所以技术上在15000 * 4 ms后它会增加最后一分钟数字吗?
void loop() {
// t is first hour digit
// y is the second hour digit
// u is the first minute digit
// i is the second minute digit
if (t == 2 && y == 4) {
t = 0;
y = 0;
}
digitalWrite(ox, 0);
digitalWrite(oy, 1);
digitalWrite(mx, 1);
digitalWrite(my, 1);
draw(t);
delay(1);
digitalWrite(ox, 1);
digitalWrite(oy, 0);
digitalWrite(mx, 1);
digitalWrite(my, 1);
draw(y);
delay(1);
digitalWrite(ox, 1);
digitalWrite(oy, 1);
digitalWrite(mx, 0);
digitalWrite(my, 1);
draw(u);
delay(1);
digitalWrite(ox, 1);
digitalWrite(oy, 1);
digitalWrite(mx, 1);
digitalWrite(my, 0);
draw(i);
delay(1);
aux++;
if (aux == 15000) {
aux = 0;
i++;
}
if (i > 9) {
i = 0;
u++;
}
if (u == 6) {
u = 0;
y++;
}
if (y > 9) {
y = 0;
t++;
}
}
答案
尝试做这样的时钟的问题是你不能保证你的代码正好在你想要的时间运行。
举个简单的例子,考虑浏览器中可用的setTimeout()
函数。如果我告诉setTimeout()
每1000毫秒运行一次我的函数,我希望每次调用之间的差异恰好是1000毫秒:
let lastTime;
const run = () => {
const now = Date.now();
lastTime && console.log('diff', now - lastTime);
lastTime = now;
setTimeout(run, 1000);
}
run();
以上是关于一段时间后,时钟算法落后几分钟的主要内容,如果未能解决你的问题,请参考以下文章