Anton Boyt
/
Nucleo_read_analog_value_with_smooth
Read an analog value using ADC.
smooth.cpp@1:9685565fd3cc, 2014-12-30 (annotated)
- Committer:
- margadon
- Date:
- Tue Dec 30 11:26:34 2014 +0000
- Revision:
- 1:9685565fd3cc
smooth function
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
margadon | 1:9685565fd3cc | 1 | //#include "math.h" |
margadon | 1:9685565fd3cc | 2 | void smooth(uint16_t *input, uint16_t *output, int n, int window) |
margadon | 1:9685565fd3cc | 3 | { |
margadon | 1:9685565fd3cc | 4 | int i,j,z,k1,k2,hw; |
margadon | 1:9685565fd3cc | 5 | uint16_t tmp; |
margadon | 1:9685565fd3cc | 6 | if((window%2)==0) window++; |
margadon | 1:9685565fd3cc | 7 | hw=(window-1)/2; |
margadon | 1:9685565fd3cc | 8 | output[0]=input[0]; |
margadon | 1:9685565fd3cc | 9 | |
margadon | 1:9685565fd3cc | 10 | for (i=1;i<n;i++){ |
margadon | 1:9685565fd3cc | 11 | tmp=0; |
margadon | 1:9685565fd3cc | 12 | if(i<hw){ |
margadon | 1:9685565fd3cc | 13 | k1=0; |
margadon | 1:9685565fd3cc | 14 | k2=2*i; |
margadon | 1:9685565fd3cc | 15 | z=k2+1; |
margadon | 1:9685565fd3cc | 16 | } |
margadon | 1:9685565fd3cc | 17 | else if((i+hw)>(n-1)){ |
margadon | 1:9685565fd3cc | 18 | k1=i-n+i+1; |
margadon | 1:9685565fd3cc | 19 | k2=n-1; |
margadon | 1:9685565fd3cc | 20 | z=k2-k1+1; |
margadon | 1:9685565fd3cc | 21 | } |
margadon | 1:9685565fd3cc | 22 | else{ |
margadon | 1:9685565fd3cc | 23 | k1=i-hw; |
margadon | 1:9685565fd3cc | 24 | k2=i+hw; |
margadon | 1:9685565fd3cc | 25 | z=window; |
margadon | 1:9685565fd3cc | 26 | } |
margadon | 1:9685565fd3cc | 27 | |
margadon | 1:9685565fd3cc | 28 | for (j=k1;j<=k2;j++){ |
margadon | 1:9685565fd3cc | 29 | tmp=tmp+input[j]; |
margadon | 1:9685565fd3cc | 30 | } |
margadon | 1:9685565fd3cc | 31 | output[i]=tmp/z; |
margadon | 1:9685565fd3cc | 32 | } |
margadon | 1:9685565fd3cc | 33 | } |