Mutila: Mouse's Utilities for Arduino
Oft-used utilities: debouncing buttons, averaging samples, and so on.
BufferedSampler.h
1 #pragma once
2 
3 #include <stdint.h>
4 #include <AbstractSampler.h>
5 
20 public:
30  BufferedSampler(const uint8_t pin, const uint16_t periodMs=10, const uint8_t samples=10);
31 
37 
43  virtual void begin();
44 
51  virtual void update();
52 
54  virtual int16_t minimum() { calculate() ; return _minimum; }
55 
57  virtual int16_t maximum() { calculate() ; return _maximum; }
58 
60  virtual float average() { calculate() ; return _mean; }
61 
69  virtual uint8_t count() { return _count; }
70 
72  virtual int16_t last();
73 
74 protected:
75  virtual void calculate();
76 
77 protected:
78  uint8_t _samples;
79  uint8_t _idx;
80  uint8_t _count;
81  uint32_t _lastUpdated;
82  bool _updated;
83  int16_t * _sampleData;
84  int16_t _minimum;
85  int16_t _maximum;
86  float _mean;
87 
88 };
89 
virtual int16_t last()
Get the most recent sample value.
uint32_t _lastUpdated
when last sample taken
int16_t * _sampleData
ring buffer for data
virtual void begin()
uint8_t _samples
max number of samples to keep in buffer
uint8_t _count
number of samples in buffer
virtual int16_t maximum()
The maximum value in the sample set.
float _mean
most recently calculated mean value
uint8_t pin()
Accessor for the pin which is geting read from.
virtual void update()
virtual uint8_t count()
virtual int16_t minimum()
The minimum value in the sample set.
int16_t _minimum
most recently calculated minimum value
BufferedSampler(const uint8_t pin, const uint16_t periodMs=10, const uint8_t samples=10)
bool _updated
flag to re-calulate avg or not
Base class for analog pin sampling classes.
int16_t _maximum
most recently calculated maximum value
Ringbuffer-based sampler for analog values.
virtual float average()
Get the mean value in the sample set.
virtual void calculate()
calculate avg, min, max if required
uint8_t _idx
index ptr (ring buffer)