Arduino陷入简单的C ++函数

时间:2018-01-10 18:27:24

标签: c++ arduino

我目前正在开展一个小型Arduino项目,该项目使用红外温度传感器测量某些表面温度。

硬件工作正常,只需用analogRead()读取模拟信号就可以正常工作,但是使用这个简单的函数来过滤测量的模拟值以获得更好的结果,而不是与Arduino相处。 / p>

每次运行此功能的草图上传到Arduino(Pro Micro)时,程序就会卡住并禁用Arduino,因此必须先重置它才能再次出现在" Ports"菜单作为COM端口。

这是我找不到错误的简单函数:

int TemperatureDifferenceSensor::measureRawFilteredTemperatureValue(int numberOfMeasurements) {
  int temperatureMeasurementValueSum = 0;
  int maxMeasuredTempValue = 0;
  int minMeasuredTempValue = 0;
  for (int i = 0; i < numberOfMeasurements; ++i) {
    int measuredTemperatureValue = analogRead(analogObjectTempPin);
    temperatureMeasurementValueSum += measuredTemperatureValue;
    if (measuredTemperatureValue > maxMeasuredTempValue) {
      maxMeasuredTempValue = measuredTemperatureValue;
    } else if (measuredTemperatureValue < minMeasuredTempValue) {
      minMeasuredTempValue = measuredTemperatureValue;
    }
    // A small delay, to not measure the same or similar value every time...
    delay(10);
  }
  temperatureMeasurementValueSum -= maxMeasuredTempValue;
  temperatureMeasurementValueSum -= minMeasuredTempValue;
  int temperatureMeasurementAverageValue = (int) (temperatureMeasurementValueSum / (numberOfMeasurements - 2));
  return temperatureMeasurementAverageValue;
}

1 个答案:

答案 0 :(得分:0)

如果 analogRead 延迟按预期工作,则应该可以。函数的一个大问题是它不能用参数2调用。这会导致零除异常,也可能是黑洞。为什么不能这样:

docker run microsoft/dotnet-samples:dotnetapp-nanoserver

docker run microsoft/dotnet-samples