Arduino的平均气温

时间:2017-01-03 23:34:31

标签: arduino average outliers

我有一个由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。

1 个答案:

答案 0 :(得分:0)

我建议在median附近对数字进行排序并计算几个数字的平均值(约为样本数量的10-25%可能是一个好的开始)。这样你就可以很容易地摆脱异常值并获得相关的平均值。