이동 평균을 계산하려고합니다. ADC에서 시끄러운 값을 얻고 있기 때문에 이동 평균을 계산하려고합니다. 그러나 이동 평균을 계산하기 위해 값을 매번 0으로 설정합니다. 너 나 좀 도와 줄 수있어? 내가 값을 표시 USART를 통해 전송하고ADC 값을 읽음으로써 부동 소수점
unsigned char buffer[5];
int samples = 0;
USART_Init0(MYUBRR);
uint16_t adc_result0, adc_result1;
float ADCaverage = 0;
while(1)
{
adc_result0 = adc_read(0); // read adc value at PA0
samples++;
//adc_result1 = adc_read(1); // read adc value at PA1
ADCaverage = (ADCaverage + adc_result0)/samples;
sprintf(buffer, "%d\n", (int)ADCaverage);
char * p = buffer;
while (*p) { USART_Transmit0(*p++); }
_delay_ms(1000);
}
return(0);
}
이 결과 :
이이 마법을 만드는 코드의 일부이다.
방정식이 올바르지 않습니다. ADCaverage + = (adc_result0-ADCaverage)/samples;을 시도하십시오. – eyllanesc
ty mate, 작동합니다. – Branis
노이즈가 염려되는 경우 정수를 사용하고 플로트하지 않을 수도 있습니다. – Lundin