2013-05-04 5 views
0

실시간으로 값을 매끄럽게하고 싶습니다. 이유는이 코드가 마이크로 컨트롤러 (arduino - atmel)를 충돌 시키거나 적어도 응답하지 않는 것으로 보인다.이동 평균 알고리즘 문제

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

아웃 I 출력을 얻을하지만 난 모든 것을두면 이 내 코드

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); 
} 

, 그래서 뭔가 첫 번째 부분에서 잘못된 것입니다.

답변

1

sizeof을 원하지 않습니다. countof을 원합니다. 당신이 무엇인지 알고 싶다면 , 그것은이다

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

array[ countof(array) ] = ... 

array의 마지막 요소를 설정하지 않습니다. 요소를 마지막 요소 이상으로 설정합니다.

+0

http://pastebin.com/TysvTt5J로 변경했습니다. –