Ich möchte einen gleitenden Durchschnitt oder etwas Ähnliches machen, weil ich laute Werte von ADC bekomme, dies ist mein erster Versuch, um den gleitenden Durchschnitt zu berechnen, aber die Werte gehen jedesmal auf 0, kannst du mir helfen?Gleitender Durchschnitt mit dem Lesen von ADC-Werten
Dies ist Teil des Codes, die diese Magie macht:
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);
}
Dieses Ergebnis, das ich über USART sende Wert anzuzeigen.
Ihre Gleichung nicht korrekt ist, versuchen Sie mit 'ADCaverage + = (adc_result0-ADCaverage)/samples;' – eyllanesc
ty Kumpel, es funktioniert – Branis
Wenn Lärm ein Problem ist, möchten Sie vielleicht auch ganze Zahlen verwenden und schweben nicht. – Lundin