我正在尝试让一个LED按照某首歌曲的节奏闪烁。这首歌曲的BPM精确为125。
我编写的代码似乎在一开始运行时就能工作,但是它运行时间越长,LED闪烁和下一个节拍开始之间的时间差就越大。 LED似乎比应该闪烁的速度略慢了一点。 我认为这是因为lastBlink有点依赖于刚刚发生的闪烁,而不是使用一个静态的初始值进行同步...
我编写的代码似乎在一开始运行时就能工作,但是它运行时间越长,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
}
}