fszhang 发表于 2021-12-12 19:49:16

调试传感器,在这里找到滤波算法,用Unity做了一个演示


原帖子在这里:
谁能帮我看一段150行C语言滤波算法,红包酬谢 (amobbs.com 阿莫电子论坛)

当然了,算法内容我没有看,直接看了12楼说的话自己写了一个,写了两个版本:C#和C++(C)fszhang/MV_Filter (github.com)
数值变化检测以当前值的10%波动为阈值。

Unity做的显示在这里:
Unity制作加权滑动平均算法演示_哔哩哔哩_bilibili



void DataAVG(byte dataIndex, byte *AVG_Times, uint32_t dataTab[], uint32_t *dataIn, uint32_t *dataLast)
{
    byte i, dataPosition;
    uint32_t Sum;
    uint32_t PID_Data, PID_DataCurrent, Margin;
    dataTab = PID_DataCurrent = *dataIn;
    for (i = 0, Sum = 0; i < *AVG_Times; i++)
    {
      if (dataIndex >= i)
            dataPosition = (byte)(dataIndex - i);
      else
            dataPosition = (byte)(AVG_DataTabCount + dataIndex - i);

      Sum += dataTab;
    }
    PID_Data = Sum / (*AVG_Times);
    Margin = PID_Data / 10;
    if (((PID_DataCurrent > (PID_Data + Margin)) && (*dataLast > (PID_Data + Margin))) ||
      (((PID_DataCurrent + Margin) < PID_Data) && ((*dataLast + Margin) < PID_Data)))
    {
      *AVG_Times = 2;
    }
    else
    {
      if (*AVG_Times < AVG_DataTabCount)
            AVG_Times++;
    }
    *dataIn = PID_Data;
    *dataLast = PID_DataCurrent;
}private void DataAVG(byte dataIndex, ref byte AVG_Times, ref UInt32[] dataTab, ref UInt32 dataIn, ref UInt32 dataLast)
{
    byte i, dataPosition;
    UInt32 Sum;
    UInt32 PID_Data, PID_DataCurrent, Margin;
    dataTab = PID_DataCurrent = dataIn;
    for (i = 0, Sum = 0; i < AVG_Times; i++)
    {
      if (dataIndex >= i)
            dataPosition = (byte)(dataIndex - i);
      else
            dataPosition = (byte)(AVG_DataTabCount + dataIndex - i);

      Sum += dataTab;
    }
    PID_Data = Sum / (AVG_Times);
    Margin = PID_Data / 10;
    if (((PID_DataCurrent > (PID_Data + Margin)) && (dataLast > (PID_Data + Margin))) ||
      (((PID_DataCurrent + Margin) < PID_Data) && ((dataLast + Margin) < PID_Data)))
    {
      AVG_Times = 2;
    }
    else
    {
      if (AVG_Times < AVG_DataTabCount)
            AVG_Times++;
    }
    dataIn = PID_Data;
    dataLast = PID_DataCurrent;
}

工程师030 发表于 2021-12-12 23:43:34

算法不错,界面也不错

justdomyself 发表于 2021-12-13 09:21:54

工程师030 发表于 2021-12-12 23:43
算法不错,界面也不错

unity3d做的界面?

工程师030 发表于 2021-12-13 09:36:03

justdomyself 发表于 2021-12-13 09:21
unity3d做的界面?

看楼主描述应该是,我也不太懂

fszhang 发表于 2021-12-13 09:45:28

justdomyself 发表于 2021-12-13 09:21
unity3d做的界面?

开发游戏都有UI开发,用这个系统来做上位机,除了体积大点,其他的都非常漂亮

justdomyself 发表于 2021-12-13 16:23:54

fszhang 发表于 2021-12-13 09:45
开发游戏都有UI开发,用这个系统来做上位机,除了体积大点,其他的都非常漂亮 ...

有没有好点的教程,推荐下

chenchaoting 发表于 2021-12-14 08:45:33

fszhang 发表于 2021-12-13 09:45
开发游戏都有UI开发,用这个系统来做上位机,除了体积大点,其他的都非常漂亮 ...

老哥以前是画板的,还用过你的库,搞游戏去了?

fszhang 发表于 2021-12-14 11:32:44

justdomyself 发表于 2021-12-13 16:23
有没有好点的教程,推荐下

教程没有去找专业的,我是关注了几个Unity开发的,偶尔会讲UI开发,剩下都是自己自学的

fszhang 发表于 2021-12-14 11:34:06

chenchaoting 发表于 2021-12-14 08:45
老哥以前是画板的,还用过你的库,搞游戏去了?

我还是做硬件的,有时也会写上位机,最近一两年刚接触Unity, 现在VS和Unity都在用

security 发表于 2021-12-14 11:58:01

关注一下,多谢分享!
页: [1]
查看完整版本: 调试传感器,在这里找到滤波算法,用Unity做了一个演示