我有一个由Sparkfun测量温度的Arduino温度计。它非常精确,但我需要更多的平均值。
我使用的代码直接来自Sparkfun(https://learn.sparkfun.com/tutorials/sik-experiment-guide-for-arduino---v32/experiment-7-reading-a-temperature-sensor)
const int temperaturePin = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
float voltage, degreesC, degreesF;
voltage = getVoltage(temperaturePin);
degreesC = (voltage - 0.5) * 100.0;
degreesF = degreesC * (9.0/5.0) + 32.0;
Serial.print("voltage: ");
Serial.print(voltage);
Serial.print(" deg C: ");
Serial.print(degreesC);
Serial.print(" deg F: ");
Serial.println(degreesF);
delay(1000);
}
float getVoltage(int pin)
{
return (analogRead(pin) * 0.004882814);
}
我每分钟都会看到每10分钟一次平均读数,然后扔出异常值,而不仅仅是每分钟都有。 例如,如果它在一分钟内读取65,64,66,67,65,44 ......它将平均前5个并抛出44个,平均为65.4。
答案 0 :(得分:0)
我建议在median附近对数字进行排序并计算几个数字的平均值(约为样本数量的10-25%可能是一个好的开始)。这样你就可以很容易地摆脱异常值并获得相关的平均值。