我们正在使用 Arduino Due 通过 USB 将串行数据发送到 Visual Studio 中生成的软件。
我们遇到的问题在于到期。我们有一段对时间要求很高的代码
PumpCycleTime = millis();
// Loop this until the pumpHIGH duration has expired
do
{
digitalWrite(Pump, HIGH);
SendSerialData();
}
while (millis() - PumpCycleTime < PumpHIGH);
// Record the pump cycle LOW start time
PumpCycleTime = millis();
// Loop this until the pumpLOW duration has expired
do
{
digitalWrite(Pump, LOW);
SendSerialData();
}
while (millis() - PumpCycleTime < 1);
最初,我们使用延迟来控制泵的频率。在示波器上测量时,这为我们提供了可靠的频率。然而,这当然会损害图表的绘制,因为数据中存在差距。
使用 millis() 我们无法产生相同的频率。显然,我们可以补偿以实现单一频率,但是我们需要能够可靠地使用范围频率。
似乎 SendSerialData() 是一个具有大约 15 个 serial.print 的函数,它正在影响时间,因为没有它,频率与预期的一样。
有谁知道任何解决方案?数据记录和实时绘制到图表是必不可少的,不能妥协。
提前致谢