我正在尝试编程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测量的好方法是什么?
答案 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;