Anton Boyt
/
Nucleo_read_analog_value_with_smooth
Read an analog value using ADC.
Embed:
(wiki syntax)
Show/hide line numbers
smooth.cpp
00001 //#include "math.h" 00002 void smooth(uint16_t *input, uint16_t *output, int n, int window) 00003 { 00004 int i,j,z,k1,k2,hw; 00005 uint16_t tmp; 00006 if((window%2)==0) window++; 00007 hw=(window-1)/2; 00008 output[0]=input[0]; 00009 00010 for (i=1;i<n;i++){ 00011 tmp=0; 00012 if(i<hw){ 00013 k1=0; 00014 k2=2*i; 00015 z=k2+1; 00016 } 00017 else if((i+hw)>(n-1)){ 00018 k1=i-n+i+1; 00019 k2=n-1; 00020 z=k2-k1+1; 00021 } 00022 else{ 00023 k1=i-hw; 00024 k2=i+hw; 00025 z=window; 00026 } 00027 00028 for (j=k1;j<=k2;j++){ 00029 tmp=tmp+input[j]; 00030 } 00031 output[i]=tmp/z; 00032 } 00033 }
Generated on Thu Jul 14 2022 04:16:13 by 1.7.2