2017-01-03 2 views
0

У меня есть термометр Arduino от 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

Вы можете рассчитать, какие значения являются выбросами, сначала сделав [краткое изложение пяти цифр] (https://en.wikipedia.org/wiki/Five-number_summary) – Charles

+0

Один из способов - сбросить самые низкие и самые высокие значения и усреднить отдых. Есть и другие способы ... google? Более сложным способом было бы, зная возможную скорость изменения температуры, чтобы любое изменение вне этого должно * сохраняться * для определенного количества показаний. –

+0

В чем вопрос? –

ответ

0

Я предлагаю сортировать цифры и вычислять среднее количество нескольких чисел (около 10-25% от количества образцов может быть хорошим началом) около median. Таким образом, вы легко избавляетесь от выбросов и получаете среднее значение.

Смежные вопросы