Josh Goldberg / Mbed 2 deprecated count_pills

Dependencies:   Servo mbed

Committer:
jgoldberg
Date:
Thu Dec 11 21:54:03 2014 +0000
Revision:
0:15d3cdafd311
Child:
1:9ebe670d8a19
Accurately counting 0-50 pills

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jgoldberg 0:15d3cdafd311 1 #include "mbed.h"
jgoldberg 0:15d3cdafd311 2 #include "util.h"
jgoldberg 0:15d3cdafd311 3
jgoldberg 0:15d3cdafd311 4 uint16_t mvgAvg(uint16_t val, int reset) {
jgoldberg 0:15d3cdafd311 5 const uint32_t len = 25;
jgoldberg 0:15d3cdafd311 6 static uint16_t vals[len] = {0};
jgoldberg 0:15d3cdafd311 7 static uint32_t ind = 0;
jgoldberg 0:15d3cdafd311 8 static uint32_t full = 0;
jgoldberg 0:15d3cdafd311 9 static uint32_t sum = 0;
jgoldberg 0:15d3cdafd311 10
jgoldberg 0:15d3cdafd311 11 if (reset) {
jgoldberg 0:15d3cdafd311 12 ind = full = sum = 0;
jgoldberg 0:15d3cdafd311 13 return 0;
jgoldberg 0:15d3cdafd311 14 }
jgoldberg 0:15d3cdafd311 15 if (full) {
jgoldberg 0:15d3cdafd311 16 sum -= vals[ind];
jgoldberg 0:15d3cdafd311 17 }
jgoldberg 0:15d3cdafd311 18 sum += val;
jgoldberg 0:15d3cdafd311 19 vals[ind] = val;
jgoldberg 0:15d3cdafd311 20
jgoldberg 0:15d3cdafd311 21 ind++;
jgoldberg 0:15d3cdafd311 22 if (ind >= len) {
jgoldberg 0:15d3cdafd311 23 ind = 0;
jgoldberg 0:15d3cdafd311 24 full = 1;
jgoldberg 0:15d3cdafd311 25 }
jgoldberg 0:15d3cdafd311 26 if (full) {
jgoldberg 0:15d3cdafd311 27 return (uint16_t) (sum / len);
jgoldberg 0:15d3cdafd311 28 }
jgoldberg 0:15d3cdafd311 29 return (uint16_t) (sum / ind);
jgoldberg 0:15d3cdafd311 30 }
jgoldberg 0:15d3cdafd311 31
jgoldberg 0:15d3cdafd311 32 int round(float val) {
jgoldberg 0:15d3cdafd311 33 return val > 0 ? ((int) (val + 0.5)) : ((int) (val - 0.5));
jgoldberg 0:15d3cdafd311 34 }