Read an analog value using ADC.

Dependencies:   mbed

Committer:
margadon
Date:
Tue Dec 30 11:26:34 2014 +0000
Revision:
1:9685565fd3cc
smooth function

Who changed what in which revision?

UserRevisionLine numberNew 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 }