求大神援手,滤波算法里数据格式错误怎么解决?
用的是十大滤波算法里的中位值滤波算法。说数据格式错误,搞了两天没弄明白。。。。别人估计都不会有这样的错,没有搜到类似的问题。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;
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) {
filter_temp = filter_buf;
filter_buf = filter_buf;
filter_buf = 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 '
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 '
编译有误。
报告将会包含更多的信息
"在编译时,输出详细信息"
在 文件>首选项 中启用
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;
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) {
filter_temp = filter_buf;
filter_buf = filter_buf;
filter_buf = filter_temp;
}
}
}
return filter_buf[(FILTER_N - 1) / 2];
} 275891381 发表于 2016-12-10 17:38
int Filter_Value;
void setup() {
太感谢您了,请问filter_buf,为什么去掉就可以了呢? rockorange 发表于 2016-12-10 18:00
太感谢您了,请问filter_buf,为什么去掉就可以了呢?
没有去掉呀,就是加了个
if(filter_buf > filter_buf) {
filter_temp = filter_buf;
filter_buf = filter_buf;
filter_buf = filter_temp;
这四句加了个
页:
[1]