25#include "MovingAverage.h"
26#include "TimeWindowable.h"
34 DEBOUNCE_PROMPT_DETECT
38#define EXTERNAL_PULLDOWN DIRECT
39#define EXTERNAL_PULLUP INVERTED
40#define ANALOG_DEFAULT DIRECT
41#define ANALOG_INVERTED INVERTED
50 virtual void smooth(
float smoothTime=PLAQUETTE_DEFAULT_SMOOTH_WINDOW) {
timeWindow(smoothTime); }
57 virtual float _read() = 0;
60 virtual float _sampleRate()
const = 0;
63 virtual void _begin();
69 virtual float _smoothed() {
return _avg.
get(); }
75 unsigned int _nSamples;
85 virtual void debounce(
float debounceTime=PLAQUETTE_DEFAULT_DEBOUNCE_WINDOW) {
timeWindow(debounceTime); }
92 [[deprecated(
"Use debounce() instead")]]
93 virtual void smooth(
float smoothTime=PLAQUETTE_DEFAULT_DEBOUNCE_WINDOW) {
debounce(smoothTime); }
97 [[deprecated(
"Use noDebounce() instead")]]
111 virtual bool _isOn() = 0;
114 virtual float _time()
const = 0;
117 virtual void _begin();
120 virtual void _step();
123 virtual bool _debounced();
126 inline void _changeState();
127 inline void _setStateFlag(
const uint8_t flag) { _state |= flag; }
128 inline void _unsetStateFlag(
const uint8_t flag) { _state &= ~flag; }
129 inline void _toggleStateFlag(
const uint8_t flag) { _state ^= flag; }
130 inline bool _getStateFlag(
const uint8_t flag) {
return((_state & flag) != 0); }
135 uint8_t _debounceMode;
151 virtual float get() {
return _smoothed(); }
154 virtual float mapTo(
float toLow,
float toHigh);
163 virtual void begin();
166 virtual float _read();
167 virtual float _sampleRate()
const {
return sampleRate(); }
192 virtual bool _isOn();
193 virtual float _time()
const {
return seconds(); }
195 virtual void _init();
197 virtual void begin();
A generic class representing a simple analog input.
Definition PqInputs.h:139
virtual float mapTo(float toLow, float toHigh)
Maps value to new range.
Definition PqInputs.cpp:150
virtual float get()
Returns value in [0, 1].
Definition PqInputs.h:151
int rawRead() const
Directly reads raw value from the pin (bypasses mode, smoothing, and engine).
Definition PqInputs.cpp:158
float read() const
Direcly reads value from the pin (bypasses mode, smoothing, and engine).
Definition PqInputs.cpp:154
Superclass for components that can be debounced.
Definition PqInputs.h:79
virtual void smooth(float smoothTime=PLAQUETTE_DEFAULT_DEBOUNCE_WINDOW)
Deprecated.
Definition PqInputs.h:93
void debounceMode(uint8_t mode)
Sets debounce mode.
Definition PqInputs.h:107
virtual void noDebounce()
Remove smoothing.
Definition PqInputs.h:88
virtual void noSmooth()
Remove smoothing.
Definition PqInputs.h:98
virtual void debounce(float debounceTime=PLAQUETTE_DEFAULT_DEBOUNCE_WINDOW)
Apply smoothing to object.
Definition PqInputs.h:85
uint8_t debounceMode() const
Returns the debounce mode.
Definition PqInputs.h:101
A generic class representing a simple digital input.
Definition PqInputs.h:171
float read() const
Directly reads value from the pin as 1 or 0 (bypasses mode, debounce, and engine).
Definition PqInputs.cpp:184
int rawRead() const
Directly reads raw value from the pin as HIGH or LOW (bypasses mode, debounce, and engine).
Definition PqInputs.cpp:188
A digital source that contains a true/false value.
Definition PqCore.h:500
The main Plaquette static class containing all the units.
Definition PqCore.h:63
static Engine & primary()
Returns the main instance of Plaquette.
Definition PqCore.cpp:30
float get()
Returns the value of the moving average. This is undefined if isValid() == false.
Definition MovingAverage.h:56
Superclass for pin-based components.
Definition PqCore.h:724
uint8_t pin() const
Returns the pin this component is attached to.
Definition PqCore.h:730
uint8_t mode() const
Returns the mode of the component.
Definition PqCore.h:733
Superclass for components that can be smoothed.
Definition PqInputs.h:44
virtual void smooth(float smoothTime=PLAQUETTE_DEFAULT_SMOOTH_WINDOW)
Apply smoothing to object.
Definition PqInputs.h:50
virtual void noSmooth()
Remove smoothing.
Definition PqInputs.h:53
Abstract class for time-based objects.
Definition TimeWindowable.h:28
virtual float timeWindow() const
Returns the time window (expressed in seconds).
Definition TimeWindowable.h:45
virtual void noTimeWindow()
Sets time window to no time window.
Definition TimeWindowable.cpp:36
A generic class representing a unit in the system.
Definition PqCore.h:373
float seconds() const
Returns engine time in seconds.
Definition PqCore.h:386
Engine * engine() const
Returns the engine that owns this unit.
Definition PqCore.h:420
float sampleRate() const
Returns engine sample rate.
Definition PqCore.h:398