sventy5 发表于 2015-4-12 13:00:48

求大神帮我看看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]
查看完整版本: 求大神帮我看看HC-SR04超声波滤波算法的问题