Anton Boyt
/
Nucleo_read_analog_value_with_smooth
Read an analog value using ADC.
Diff: smooth.cpp
- Revision:
- 1:9685565fd3cc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/smooth.cpp Tue Dec 30 11:26:34 2014 +0000 @@ -0,0 +1,33 @@ +//#include "math.h" +void smooth(uint16_t *input, uint16_t *output, int n, int window) +{ + int i,j,z,k1,k2,hw; + uint16_t tmp; + if((window%2)==0) window++; + hw=(window-1)/2; + output[0]=input[0]; + + for (i=1;i<n;i++){ + tmp=0; + if(i<hw){ + k1=0; + k2=2*i; + z=k2+1; + } + else if((i+hw)>(n-1)){ + k1=i-n+i+1; + k2=n-1; + z=k2-k1+1; + } + else{ + k1=i-hw; + k2=i+hw; + z=window; + } + + for (j=k1;j<=k2;j++){ + tmp=tmp+input[j]; + } + output[i]=tmp/z; + } +} \ No newline at end of file