串行打印减慢了代码的执行速度。阿杜伊诺到期
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)。
希望对您有所帮助。
约阿夫
我们正在使用 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)。
希望对您有所帮助。
约阿夫