|
用的是十大滤波算法里的中位值滤波算法。说数据格式错误,搞了两天没弄明白。。。。别人估计都不会有这样的错,没有搜到类似的问题。
int Filter_Value;
void setup() {
Serial.begin(9600); // 初始化串口通信
randomSeed(analogRead(0)); // 产生随机种子
}
void loop() {
Filter_Value = Filter(); // 获得滤波器输出值
Serial.println(Filter_Value); // 串口输出
delay(50);
}
// 用于随机产生一个300左右的当前值
int Get_AD() {
return random(295, 305);
}
// 中位值滤波法
#define FILTER_N 101
int Filter() {
int filter_buf[FILTER_N];
int i, j;
int filter_temp;
for(i = 0; i < FILTER_N; i++) {
filter_buf = Get_AD();
delay(1);
}
// 采样值从小到大排列(冒泡法)
for(j = 0; j < FILTER_N - 1; j++) {
for(i = 0; i < FILTER_N - 1 - j; i++) {
if(filter_buf > filter_buf[i + 1]) {
filter_temp = filter_buf;
filter_buf = filter_buf[i + 1];
filter_buf[i + 1] = filter_temp;
}
}
}
return filter_buf[(FILTER_N - 1) / 2];
}
编译报错如下
Arduino:1.7.10 (Windows 7), 板:"Arduino Nano, ATmega328"
构建选项已变更,全部重新构建
delete1.ino: In function 'int Filter()':
delete1.ino:26:16: error: incompatible types in assignment of 'int' to 'int [101]'
delete1.ino:32:39: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
delete1.ino:33:21: error: invalid conversion from 'int*' to 'int' [-fpermissive]
delete1.ino:34:20: error: incompatible types in assignment of 'int' to 'int [101]'
编译有误。
报告将会包含更多的信息
"在编译时,输出详细信息"
在 文件>首选项 中启用
|
|