FilteredAnalog base class with generic MappingFunction.
More...
#include <AH/Hardware/FilteredAnalog.hpp>
|
template<typename M = MappingFunction> |
std::enable_if< std::is_constructible< bool, M >::value, AnalogType >::type | mapFnHelper (AnalogType input) |
| Helper function that applies the mapping function if it's enabled. More...
|
|
template<typename M = MappingFunction> |
std::enable_if<!std::is_constructible< bool, M >::value, AnalogType >::type | mapFnHelper (AnalogType input) |
| Helper function that applies the mapping function without checking if it's enabled. More...
|
|
template<class MappingFunction, uint8_t Precision = 10, uint8_t FilterShiftFactor = ANALOG_FILTER_SHIFT_FACTOR, class FilterType = ANALOG_FILTER_TYPE, class AnalogType = analog_t, uint8_t IncRes = MaximumFilteredAnalogIncRes< FilterShiftFactor, FilterType, AnalogType>::value>
class AH::GenericFilteredAnalog< MappingFunction, Precision, FilterShiftFactor, FilterType, AnalogType, IncRes >
FilteredAnalog base class with generic MappingFunction.
- See also
- FilteredAnalog
Definition at line 39 of file FilteredAnalog.hpp.
◆ GenericFilteredAnalog()
Construct a new GenericFilteredAnalog object.
- Parameters
-
analogPin | The analog pin to read from. |
mapFn | The mapping function |
initial | The initial value of the filter. |
Definition at line 51 of file FilteredAnalog.hpp.
◆ reset()
void reset |
( |
AnalogType |
value = 0 | ) |
|
|
inline |
Reset the filter to the given value.
- Parameters
-
value | The value to reset the filter state to. |
- Todo:
- Should the filter be initialized to the first value that is read instead of to zero? This would require adding a
begin
method.
Definition at line 66 of file FilteredAnalog.hpp.
◆ map()
Specify a mapping function/functor that is applied to the analog value after filtering and before applying hysteresis.
- Parameters
-
fn | This functor should have a call operator that takes the filtered value (of ADC_BITS + IncRes bits wide) as a parameter, and returns a value of ADC_BITS + IncRes bits wide. |
- Note
- Applying the mapping function before filtering could result in the noise being amplified to such an extent that filtering it afterwards would be ineffective.
Applying it after hysteresis would result in a lower resolution.
That's why the mapping function is applied after filtering and before hysteresis.
Definition at line 87 of file FilteredAnalog.hpp.
◆ getMappingFunction() [1/2]
◆ getMappingFunction() [2/2]
◆ update()
Read the analog input value, apply the mapping function, and update the average.
- Return values
-
true | The value changed since last time it was updated. |
false | The value is still the same. |
Definition at line 107 of file FilteredAnalog.hpp.
◆ getValue()
AnalogType getValue |
( |
| ) |
const |
|
inline |
Get the filtered value of the analog input (with the mapping function applied).
- Note
- This function just returns the value from the last call to update, it doesn't read the analog input again.
- Returns
- The filtered value of the analog input, as a number of
Precision
bits wide.
Definition at line 125 of file FilteredAnalog.hpp.
◆ getFloatValue()
float getFloatValue |
( |
| ) |
const |
|
inline |
Get the filtered value of the analog input with the mapping function applied as a floating point number from 0.0 to 1.0.
- Returns
- The filtered value of the analog input, as a number from 0.0 to 1.0.
Definition at line 134 of file FilteredAnalog.hpp.
◆ getRawValue()
AnalogType getRawValue |
( |
| ) |
const |
|
inline |
Read the raw value of the analog input without any filtering or mapping applied, but with its bit depth increased by IncRes
.
Definition at line 142 of file FilteredAnalog.hpp.
◆ getMaxRawValue()
constexpr static AnalogType getMaxRawValue |
( |
| ) |
|
|
inlinestaticconstexpr |
◆ setupADC()
◆ mapFnHelper() [1/2]
std::enable_if<std::is_constructible<bool, M>::value, AnalogType>::type mapFnHelper |
( |
AnalogType |
input | ) |
|
|
inlineprivate |
Helper function that applies the mapping function if it's enabled.
This function is only enabled if MappingFunction is explicitly convertible to bool.
Definition at line 174 of file FilteredAnalog.hpp.
◆ mapFnHelper() [2/2]
std::enable_if<!std::is_constructible<bool, M>::value, AnalogType>::type mapFnHelper |
( |
AnalogType |
input | ) |
|
|
inlineprivate |
Helper function that applies the mapping function without checking if it's enabled.
This function is only enabled if MappingFunction is not convertible to bool.
Definition at line 185 of file FilteredAnalog.hpp.
◆ analogPin
◆ mapFn
◆ filter
EMA<FilterShiftFactor, FilterType> filter |
|
private |
◆ hysteresis
The documentation for this class was generated from the following file: