2017-01-03 372 views
0

我有一個由Sparkfun測量溫度的Arduino溫度計。這非常精確,但我需要更多的平均水平。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

您可以通過首先執行[五位數摘要](https://en.wikipedia.org/wiki/Five-number_summary) – Charles

+0

來計算哪些值是異常值。一種方法是丟棄最低和最高讀數,並將平均值休息。還有其他方法...谷歌?一個更復雜的方法是知道可能的溫度變化率,除此之外的任何變化必須*持續*一定數量的讀數。 –

+0

問題是什麼? –

回答

0

我建議對median附近的數字進行排序並計算出幾個數字的平均值(大約10-25%的樣本數可能是一個好開端)。通過這種方式,您可以很容易地擺脫異常值,並獲得相關的平均值。