求大神帮我看看HC-SR04超声波滤波算法的问题
本帖最后由 sventy5 于 2015-4-12 13:02 编辑SR04超声波价格便宜,但是存在一定的误差,作为小白的我就按葫芦画瓢写了一个超声波滤波程序,结果不管怎么调试都不能输出正确的值,还请大神们解救{:soso_e109:}int distance1;
int output1 = 5;
int intput1 = 6;
//////////////////////////////////////////////////////
void setup() {
Serial.begin(9600); // 初始化串口通信
pinMode(intput1, INPUT);
pinMode(output1, OUTPUT);
randomSeed(Filter()); // 产生随机种子
}
void loop() {
distance1 = Filter(); // 获得滤波器输出值
distance1 = distance1; // 最近一次有效采样的值,该变量为全局变量
////////////////////////////////////////////////////////////////
{ //第一个超声波
digitalWrite(output1, LOW);
delayMicroseconds(2);
digitalWrite(output1, HIGH);
delayMicroseconds(10);
intput1 = pulseIn(intput1, HIGH);
distance1 = intput1 / 58;
distance1 = constrain(distance1, 10, 300);
}
Serial.print("distance1=");
Serial.print(distance1);
delay(500);
}
//用于随机产生一个100左右的当前值
int Get_AD() {
random(95, 105);
}
// 限幅滤波(又称程序判断滤波法)
#define FILTER_A 100
int Filter() {
int Newintput1;
Newintput1 = Get_AD();
if (((Newintput1 - intput1) < FILTER_A) || ((intput1 - Newintput1) < FILTER_A))
return intput1;
else
return Newintput1;
}
页:
[1]