串行打印减慢了代码的执行速度。阿杜伊诺到期

Serial print slowing down execution of code. Arduino Due

我们正在使用 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 的函数,它正在影响计时,因为没有它频率是预期的。

有人知道解决办法吗?数据实时记录和绘制成图表是必不可少的,不能泄露。

提前致谢

如果时间非常紧迫,请不要使用 delay(),请使用 有限状态机。 除此之外,您的波特率是多少?如果它是 9600,那么很可能是你的速度变慢了,因为 println();,尝试使用更大的波特率(比如 115200)。

希望对您有所帮助。

约阿夫