从X测量中获得平均值

时间:2017-04-27 19:26:13

标签: c esp8266

我正在尝试编程Mikrocontroller通过超声波传感器自动测量距离并将值上传到thingSpeak。由于传感器不是很可靠,我试图进行多次测量并上传平均值。 我正在使用#include <NewPing.h>图书馆,所以sonar.ping_cm()给了我距离。 我的代码看起来像这样:

#include <ESP8266WiFi.h>
#include <NewPing.h>
void loop() {
float distance_1 = sonar.ping_cm();
delay(50);
float distance_2 = sonar.ping_cm();
delay(50);
float distance_3 = sonar.ping_cm();
mean distance = (distance_1+distance_2+distance_3)/3
upload  to thingSpeak

在不编写X行的情况下将此方法扩展到X测量的好方法是什么?

2 个答案:

答案 0 :(得分:1)

X是在平均计算之前必须创建多少次测量的参数。

float getAverage(int X) {
    float out = 0;
    int i = 0;

    for (i = 0; i < X; i++) {
        out += sonar.ping_cm();
    }
    return out / (float)X;
}

答案 1 :(得分:1)

for循环看起来不错:

void loop(const int x) {
    float distance_1 = 0.0;
    for (int i=0;i<x;i++)
    {
        distance_1 += sonar.ping_cm();
        delay(50);
    }
    mean distance = (distance_1)/x;