Read an analog value using ADC.

Dependencies:   mbed

smooth.cpp

Committer:
margadon
Date:
2014-12-30
Revision:
1:9685565fd3cc

File content as of revision 1:9685565fd3cc:

//#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;
   }
}