TeensyNanoExoCode
Loading...
Searching...
No Matches
InclineDetector.h
Go to the documentation of this file.
1#ifndef INCLINEDETECTOR_H
2#define INCLINEDETECTOR_H
3
4#if defined(ARDUINO_ARDUINO_NANO33BLE)
13#include "Arduino.h"
14// Average stair ascent should be ~0.006 Pa/sample at 500 Hz
15#define DEFAULT_ALPHA 0.01f
16#define SMOOTH_ALPHA 0.025f
17#define DEFAULT_THRESHOLD 1.5f
18#define INCLINE_DELTA_MS 10 // ms
19
20typedef enum
21{
22 Incline = 0,
23 Decline = 1,
24 Level = 2,
25 incline_state_LENGTH
26} incline_state_t;
27
28class InclineDetector
29{
30 public:
36 InclineDetector(float alpha = DEFAULT_ALPHA, float threshold = DEFAULT_THRESHOLD);
37
44 incline_state_t run(float pressure);
45
51 incline_state_t getInclineState();
52
53 void setAlpha(float alpha);
54 void setThreshold(float threshold);
55
56 private:
57
62 incline_state_t _state;
63
68 float _avgPressure;
69
74 float _alpha;
79 float _threshold;
80
85 float _smooth_demeanedPressure;
86
87 float _smooth_alpha;
88};
89
90#endif // ARDUINO_ARDUINO_NANO33BLE
91#endif // INCLINEDETECTOR_H