极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: shenhaiyu

十大滤波算法程序大全(Arduino精编无错版)

  [复制链接]
发表于 2016-12-15 12:20:07 | 显示全部楼层
谢谢分享,这个非常好
回复 支持 反对

使用道具 举报

发表于 2016-12-18 22:21:51 | 显示全部楼层
很棒的一篇文章。很方便边查边学边用,省去了到处翻的麻烦。赞一个!!!
回复 支持 反对

使用道具 举报

发表于 2017-1-22 18:36:30 | 显示全部楼层
我得把帖子顶上去。楼主为啥我这小白把代码复制到arduino ide 1.8里面都提示出错了,无法编译?比如第5种,中位置算法里面2种算法,总是在这里
if(filter_buf > filter_buf[i + 1]) {
        filter_temp = filter_buf;
        filter_buf = filter_buf[i + 1];
        filter_buf[i + 1] = filter_temp;
      }出错,自动定位到filter_buf = filter_buf[i + 1];出错了,无法编译过去。求解?
回复 支持 反对

使用道具 举报

发表于 2017-3-27 11:08:37 | 显示全部楼层
本帖最后由 GGG1101 于 2017-3-28 10:48 编辑
拾瑞 发表于 2013-11-2 17:27
"算法"到最后最是数学问题,整理再多,不会用全白搭!

就是这些源码,直接抄,用在你的代码里,你不明白原理, ...


基本看不懂,需要慢慢理解。
回复 支持 反对

使用道具 举报

发表于 2017-3-28 10:59:23 | 显示全部楼层
你好,大神。你可不可以帮我看一下我用你写的算术平均滤波方法写的超声波测距代码有没有问题。

  1. #include <LiquidCrystal.h>
  2. LiquidCrystal lcd (12,11,5,4,3,2);
  3. int TrigPin = 9;
  4.   int EchoPin =8;
  5. unsigned long Time_Echo_us;


  6. void setup()
  7. {
  8. lcd.begin(16,2);
  9. ;
  10. pinMode(TrigPin, OUTPUT);
  11. pinMode(EchoPin, INPUT);
  12. }


  13. void loop()
  14. {
  15.    
  16.    
  17.    digitalWrite(TrigPin,LOW);
  18.    delayMicroseconds(2);
  19.    digitalWrite(TrigPin,HIGH);
  20.    delayMicroseconds(50);
  21.    digitalWrite(TrigPin,LOW);
  22.    
  23.    Time_Echo_us= pulseIn(EchoPin,HIGH);
  24.    
  25.     if(( Time_Echo_us <= 23530)&&(Time_Echo_us > 175))
  26.     {
  27.        #define FILTER_N 4
  28.         unsigned long j;
  29.          
  30.         unsigned long filter_sum = 0;
  31.         for(int i = 0; i < FILTER_N; i++)
  32.         {
  33.           filter_sum +=(  Time_Echo_us*0.017);
  34.           delay(1);
  35.         }
  36.         j=  ( (filter_sum / FILTER_N));
  37.       
  38.         lcd.print(j);
  39.         delay(400);
  40.         lcd.clear();
  41.         lcd.home();
  42.     }
  43.     else
  44.     {
  45.       lcd.clear();
  46.     }
  47.    
  48. }
  49.      
复制代码



我本意是想在一个周期内取5次超声波测量值,然后求其平均值打印在LCD上面。我用您的算术平均滤波代码,也能显示,就是感觉好像没有取到平均值(和没有使用滤波方法之前一样效果)。在同一个地方,超声波模块也没有移动,数字跳动比较大,按道理娶了平均值数字波动是比较小的,整数位最起码不会跳动2厘米上下。你的这个滤波方法肯定是正确的,所以我估计是没有理解您写的这个滤波方法,或者用错了,麻烦您抽空帮我看一下我上面的代码,帮我指导整理修改一下,感激不尽。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-13 12:10:50 | 显示全部楼层
GGG1101 发表于 2017-3-28 10:59
你好,大神。你可不可以帮我看一下我用你写的算术平均滤波方法写的超声波测距代码有没有问题。

你的模块估计问题不小
回复 支持 反对

使用道具 举报

发表于 2017-7-5 08:46:55 | 显示全部楼层
算法经典,绝对收藏
回复 支持 反对

使用道具 举报

发表于 2017-8-28 22:05:22 | 显示全部楼层
你好,楼主,我用弯曲传感器做了你个手套,时刻读取参数传到电脑上,用哪个滤波算法好一点啊。无意中发现了这么一个好地方。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-15 13:23:34 | 显示全部楼层
zhang1996 发表于 2017-8-28 22:05
你好,楼主,我用弯曲传感器做了你个手套,时刻读取参数传到电脑上,用哪个滤波算法好一点啊。无意中发现了 ...

挨个试吧~~~
回复 支持 反对

使用道具 举报

发表于 2017-11-22 05:49:23 | 显示全部楼层
你好,感谢您的分享
回复 支持 反对

使用道具 举报

发表于 2017-11-22 09:41:17 | 显示全部楼层
非常非常感谢分享,非常优秀的算法
回复 支持 反对

使用道具 举报

发表于 2017-11-23 07:53:48 | 显示全部楼层
先收藏再学习!
回复 支持 反对

使用道具 举报

发表于 2017-11-23 10:28:45 | 显示全部楼层
厉害,谢谢楼主
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2020-9-22 16:54 , Processed in 0.050419 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表