C 移动平均算法问题

C 移动平均算法问题,c,arduino,atmel,C,Arduino,Atmel,我希望实时平滑值。出于某种原因,该代码似乎至少会使微控制器(arduino-atmel)崩溃或不响应。 这是我的密码 float tilttemp[] = { 1,1,1,1,1,1,1,1 }; float rolltemp[] = { 1,1,1,1,1 }; float pantemp[] = { 1,1,1,1,1 }; float tiltausgabe = 0; float rollausgabe = 0; float panausgabe = 0; void trackerOutp

我希望实时平滑值。出于某种原因,该代码似乎至少会使微控制器(arduino-atmel)崩溃或不响应。 这是我的密码

float tilttemp[] = { 1,1,1,1,1,1,1,1 };
float rolltemp[] = { 1,1,1,1,1 };
float pantemp[] = { 1,1,1,1,1 };
float tiltausgabe = 0;
float rollausgabe = 0;
float panausgabe = 0;
void trackerOutput()
{

    for(int i=0; i < sizeof(tilttemp) - 1; i++)
    {
       tilttemp[i] = tilttemp[i+1];
    }

    tilttemp[sizeof(tilttemp)] = tiltAngleLP;  //tiltAngleLP is a value that is available

    tiltausgabe = 0;
    for(int i=0; i < sizeof(tilttemp); i++)
    {
       tiltausgabe += tilttemp[i];
    }

    tiltausgabe = tiltausgabe/(sizeof(tilttemp));


    Serial.print(tiltausgabe);
    Serial.print(",");
    Serial.print(rollausgabe);
    Serial.print(",");  
    Serial.println(panausgabe);   
}

我得到了输出,所以第一部分有问题。

您不需要
sizeof
。您需要
countof
。 如果你想知道这是什么,它是:

#define countof(a) (sizeof(a)/sizeof((a)[0]))

不会设置
数组的最后一个元素。
它将设置超出最后一个元素的元素

#define countof(a) (sizeof(a)/sizeof((a)[0]))
array[ countof(array) ] = ...