gpt4 book ai didi

c++ - 每 x 秒运行一次代码,无论在循环内执行多长时间

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:01:29 25 4
gpt4 key购买 nike

我正在尝试让 LED 灯随着特定歌曲的节拍闪烁。这首歌恰好有 125 bpm。
我编写的代码一开始似乎可以工作,但它运行的时间越长,LED 闪烁和下一节拍开始之间的时间差异就越大。 LED 似乎闪烁得有点太慢了。

我认为发生这种情况是因为 lastBlink 有点依赖于之前发生的闪烁来保持同步,而不是使用一个静态初始值来同步到...

unsigned int bpm = 125;
int flashDuration = 10;
unsigned int lastBlink = 0;
for(;;) {
if (getTickCount() >= lastBlink+1000/(bpm/60)) {
lastBlink = getTickCount();
printf("Blink!\r\n");
RS232_SendByte(cport_nr, 4); //LED ON
delay(flashDuration);
RS232_SendByte(cport_nr, 0); //LED OFF
}
}

最佳答案

将值添加到 lastBlink,而不是重新读取它,因为 getTickCount 可能跳过了比想要等待的确切节拍更多的内容。

lastblink+=1000/(bpm/60);

关于c++ - 每 x 秒运行一次代码,无论在循环内执行多长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35468032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com