我目前正在开展一个小型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;
}
答案 0 :(得分:0)
如果 analogRead 和延迟按预期工作,则应该可以。函数的一个大问题是它不能用参数2调用。这会导致零除异常,也可能是黑洞。为什么不能这样:
docker run microsoft/dotnet-samples:dotnetapp-nanoserver
docker run microsoft/dotnet-samples