123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
-
- #ifndef RESPONSIVE_ANALOG_READ_H
- #define RESPONSIVE_ANALOG_READ_H
- #include <Arduino.h>
- class ResponsiveAnalogRead
- {
- public:
-
-
-
-
-
-
-
- ResponsiveAnalogRead(){};
- ResponsiveAnalogRead(int pin, bool sleepEnable, float snapMultiplier = 0.01){
- begin(pin, sleepEnable, snapMultiplier);
- };
- void begin(int pin, bool sleepEnable, float snapMultiplier = 0.01);
-
- inline int getValue() { return responsiveValue; }
- inline int getRawValue() { return rawValue; }
- inline bool hasChanged() { return responsiveValueHasChanged; }
- inline bool isSleeping() { return sleeping; }
- void update();
- void update(int rawValueRead);
- void setSnapMultiplier(float newMultiplier);
- inline void enableSleep() { sleepEnable = true; }
- inline void disableSleep() { sleepEnable = false; }
- inline void enableEdgeSnap() { edgeSnapEnable = true; }
-
- inline void disableEdgeSnap() { edgeSnapEnable = false; }
- inline void setActivityThreshold(float newThreshold) { activityThreshold = newThreshold; }
-
- inline void setAnalogResolution(int resolution) { analogResolution = resolution; }
-
- private:
- int pin;
- int analogResolution = 1024;
- float snapMultiplier;
- bool sleepEnable;
- float activityThreshold = 4.0;
- bool edgeSnapEnable = true;
- float smoothValue;
- unsigned long lastActivityMS;
- float errorEMA = 0.0;
- bool sleeping = false;
- int rawValue;
- int responsiveValue;
- int prevResponsiveValue;
- bool responsiveValueHasChanged;
- int getResponsiveValue(int newValue);
- float snapCurve(float x);
- };
- #endif
|