Library adds the functions for obtaining averages for analog values and setting min and max values to be considered in the averaging (To filter out any out of range values)
analogAverager.cpp@1:b645a3714368, 2019-10-07 (annotated)
- Committer:
- masterkookus
- Date:
- Mon Oct 07 12:44:29 2019 +0000
- Revision:
- 1:b645a3714368
- Parent:
- 0:13ce3869e3dd
Added percent or value option
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
masterkookus | 0:13ce3869e3dd | 1 | #include "analogAverager.h" |
masterkookus | 0:13ce3869e3dd | 2 | |
masterkookus | 1:b645a3714368 | 3 | analogAverager::analogAverager(float nominalVal, bool useMinLimit, bool minIsPercent, float minSetVal, bool useMaxLimit, bool maxIsPercent, float maxSetVal) |
masterkookus | 0:13ce3869e3dd | 4 | { |
masterkookus | 0:13ce3869e3dd | 5 | nomVal = nominalVal; |
masterkookus | 0:13ce3869e3dd | 6 | maxLim=useMinLimit; |
masterkookus | 0:13ce3869e3dd | 7 | minLim=useMaxLimit; |
masterkookus | 1:b645a3714368 | 8 | if (minIsPercent) |
masterkookus | 1:b645a3714368 | 9 | { |
masterkookus | 1:b645a3714368 | 10 | minVal = nominalVal*minSetVal; |
masterkookus | 1:b645a3714368 | 11 | } |
masterkookus | 1:b645a3714368 | 12 | else |
masterkookus | 1:b645a3714368 | 13 | { |
masterkookus | 1:b645a3714368 | 14 | minVal = minSetVal; |
masterkookus | 1:b645a3714368 | 15 | } |
masterkookus | 1:b645a3714368 | 16 | if (maxIsPercent) |
masterkookus | 1:b645a3714368 | 17 | { |
masterkookus | 1:b645a3714368 | 18 | maxVal = nominalVal*maxSetVal; |
masterkookus | 1:b645a3714368 | 19 | } |
masterkookus | 1:b645a3714368 | 20 | else |
masterkookus | 1:b645a3714368 | 21 | { |
masterkookus | 1:b645a3714368 | 22 | maxVal = maxSetVal; |
masterkookus | 1:b645a3714368 | 23 | } |
masterkookus | 0:13ce3869e3dd | 24 | sampleNum=0; |
masterkookus | 0:13ce3869e3dd | 25 | } |
masterkookus | 0:13ce3869e3dd | 26 | |
masterkookus | 0:13ce3869e3dd | 27 | void analogAverager::putVal(float newval) |
masterkookus | 0:13ce3869e3dd | 28 | { |
masterkookus | 0:13ce3869e3dd | 29 | if (maxLim) |
masterkookus | 0:13ce3869e3dd | 30 | { |
masterkookus | 0:13ce3869e3dd | 31 | if (newval>maxVal) |
masterkookus | 0:13ce3869e3dd | 32 | { |
masterkookus | 0:13ce3869e3dd | 33 | return; |
masterkookus | 0:13ce3869e3dd | 34 | } |
masterkookus | 0:13ce3869e3dd | 35 | } |
masterkookus | 0:13ce3869e3dd | 36 | if (minLim) |
masterkookus | 0:13ce3869e3dd | 37 | { |
masterkookus | 0:13ce3869e3dd | 38 | if (newval<minVal) |
masterkookus | 0:13ce3869e3dd | 39 | { |
masterkookus | 0:13ce3869e3dd | 40 | return; |
masterkookus | 0:13ce3869e3dd | 41 | } |
masterkookus | 0:13ce3869e3dd | 42 | } |
masterkookus | 0:13ce3869e3dd | 43 | |
masterkookus | 0:13ce3869e3dd | 44 | if (sampleNum>=10) |
masterkookus | 0:13ce3869e3dd | 45 | { |
masterkookus | 0:13ce3869e3dd | 46 | averageVals[1]=newval; |
masterkookus | 0:13ce3869e3dd | 47 | averageVals[0]=((averageVals[0]+averageVals[1])*0.5f); |
masterkookus | 0:13ce3869e3dd | 48 | } |
masterkookus | 0:13ce3869e3dd | 49 | else |
masterkookus | 0:13ce3869e3dd | 50 | { |
masterkookus | 0:13ce3869e3dd | 51 | sampleVals[sampleNum]=newval; |
masterkookus | 0:13ce3869e3dd | 52 | sampleNum++; |
masterkookus | 0:13ce3869e3dd | 53 | } |
masterkookus | 0:13ce3869e3dd | 54 | if (sampleNum==10) |
masterkookus | 0:13ce3869e3dd | 55 | { |
masterkookus | 0:13ce3869e3dd | 56 | averageVals[0]=(sampleVals[0]+sampleVals[1]+sampleVals[2]+sampleVals[3]+sampleVals[4]+sampleVals[5]+sampleVals[6]+sampleVals[7]+sampleVals[8]+sampleVals[9])*0.1f; |
masterkookus | 0:13ce3869e3dd | 57 | sampleNum++; |
masterkookus | 0:13ce3869e3dd | 58 | } |
masterkookus | 0:13ce3869e3dd | 59 | } |
masterkookus | 0:13ce3869e3dd | 60 | |
masterkookus | 0:13ce3869e3dd | 61 | float analogAverager::getAvg(void) |
masterkookus | 0:13ce3869e3dd | 62 | { |
masterkookus | 0:13ce3869e3dd | 63 | return averageVals[0]; |
masterkookus | 0:13ce3869e3dd | 64 | } |
masterkookus | 0:13ce3869e3dd | 65 | |
masterkookus | 0:13ce3869e3dd | 66 | void analogAverager::resetNum(void) |
masterkookus | 0:13ce3869e3dd | 67 | { |
masterkookus | 0:13ce3869e3dd | 68 | sampleNum=0; |
masterkookus | 0:13ce3869e3dd | 69 | averageVals[0]=0; |
masterkookus | 0:13ce3869e3dd | 70 | averageVals[1]=0; |
masterkookus | 0:13ce3869e3dd | 71 | } |
masterkookus | 0:13ce3869e3dd | 72 |