C 放弃距离测量中的失控值
我试图从我的HC-SR04超声波传感器获得更好的读数: 我正在使用新的.ping库,因此C 放弃距离测量中的失控值,c,mean,arduino-ide,C,Mean,Arduino Ide,我试图从我的HC-SR04超声波传感器获得更好的读数: 我正在使用新的.ping库,因此sonar.ping_cm()可以获取测量的距离(以厘米为单位)。 我的想法是测量X次并计算平均值(mean\u value\u 1)。 下一步是获取所有读数+/-20%的偏差平均值\u 1-->将其踢出-->计算新的平均值并返回-->(返回x距离/新计数;) 我正在将值上载到thing speak,但使用以下代码,我总是以上载的“NAN”结尾:-( 代码如下: float getAverage(int X)
sonar.ping_cm()
可以获取测量的距离(以厘米为单位)。
我的想法是测量X
次并计算平均值(mean\u value\u 1
)。
下一步是获取所有读数+/-20%的偏差平均值\u 1
-->将其踢出-->计算新的平均值并返回-->(返回x距离/新计数;
)
我正在将值上载到thing speak,但使用以下代码,我总是以上载的“NAN”结尾:-(
代码如下:
float getAverage(int X) {
float x_distance = 0,temporary,Mean_Value_1;
int i = 0, first_count = 0, new_count=0, values[]={};
for (i = 0; i < X; i++) {
x_distance += sonar.ping_cm();
values[first_count++] = x_distance;
delay(100);
}
Mean_Value_1 = x_distance / X;
x_distance = 0;
for (i=0; i<first_count; i++){
temporary = (Mean_Value_1 - values[i])*100/Mean_Value_1;
if (temporary < 20 && temporary > -20){
x_distance += values[i];
new_count++;
}
}
return x_distance / new_count;
}
因此,如果我在循环中调用double distance=getAverage(1000);
。
之后的一切都不起作用了检查
新计数的值
。我怀疑你在除以零
return new_count ? x_distance / new_count : -1; /* distance cannot be negative! */
int-values[]={}
?这是如何编译的?在任何情况下,您都有一个零元素数组,因此values[first_-count++]
具有未定义的行为。请使用double
而不是float
。
return new_count ? x_distance / new_count : -1; /* distance cannot be negative! */