2013-05-04 58 views
0

我想實時平滑值。由於這個代碼似乎使微控制器(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); 
} 

如果我離開的一切,但

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

了我得到的輸出,這樣的東西是錯誤的第一部分。

回答

1

你不想要sizeof。你想要​​。 如果你想知道那是什麼,那就是:

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

array[ countof(array) ] = ... 

不會設置array的最後一個元素。 它將設置元素超出最後一個元素。

+0

我將其更改爲http://pastebin.com/TysvTt5J是你的意思 – 2013-05-04 01:12:58