求助 关于滤波
void VSI() {int VSI_Alt = 0;
int VSIvalue = 0;
unsigned long VSI_LastTime = 0;
//Averiging
// first remove (subtract) the oldest valeu from ArraySum
VSIArraySum -= VSIArray;
// ... and replace it with the new value
VSI_Alt = AltitudeArraySum / AltitudeArraySize;
VSI_LastTime = millis();
/*
Serial.print("VSI_Alt = ");
Serial.println(VSI_Alt);
Serial.println("======================================");
*/
VSIArray = (VSI_Alt - VSI_Alt_Old)*60000/(VSI_LastTime - VSI_Alt_Old_Time);
VSIArraySum += VSIArray;
VSIArrayIndex +=1; // shift the index for next time
if (VSIArrayIndex == VSIArraySize) {// if we reached the tom of the array
VSIArrayIndex = 0; //go to the start of the array
}
if (millis() - VSI_Timer > BufferTimer) {
VSI_LastTime = millis();
VSIvalue = VSIArraySum / VSIArraySize;
textAreaVSIvalue.ClearArea();
textAreaVSIvalue.Printf("%4d", abs(VSIvalue)); //这部分太灵敏了 想用一阶滤波 求教大神们怎么写
textAreaVSIarrow.ClearArea();
if (VSIvalue > 0) {
textAreaVSIarrow.print("%"); // going UP
}
if (VSIvalue < 0) {
textAreaVSIarrow.print("&"); // going DOWN
}
VSI_Timer = VSI_LastTime;
}
VSI_Alt_Old_Time = VSI_LastTime;
VSI_Alt_Old = VSI_Alt;
R_VSI_avg = VSIvalue;
}
以上代码关于 VSIvalue 怎么能用一阶滤波延迟 显示?
高手在哪里。。。。
页:
[1]