ESPNode
rotarymodul.h
Go to the documentation of this file.
1 #ifdef USE_ROTARYMODUL
2 
3 #ifndef _ROTARYMODUL_H_
4 #define _ROTARYMODUL_H_
5 /***************************************************************************************
6  ***************************************************************************************/
7 
8 typedef struct {
9  uint16_t min;
10  uint16_t max;
11  uint16_t cur;
12  uint16_t cur_old;
13 } level_t;
14 
15 #define LONG_PRESSED_AFTER_MS 1000
16 #define SHORT_PRESSED_AFTER_MS 20
17 #define ROTARY_MAXLEVEL 5
18 
19 
20 class RotaryModul {
21 
22 public:
25  void begin(uint8_t _pin_a, uint8_t _pin_b, uint8_t _pin_sw, uint8_t _pin_mode);
26  void initLevel(uint8_t _level, uint16_t _minVal, uint16_t _curVal, uint16_t _maxVal);
27  uint8_t changed();
28  uint8_t curLevel();
29  uint16_t curValue();
30  uint16_t curValue(uint8_t _level);
31  void setMaxLevel(uint8_t _Maxlevel);
32  void setLevel(uint8_t _level);
33  void setMaxValue(uint16_t _maxValue);
34  void setValue(uint16_t _value);
35  void setIsChanged(uint8_t _changed);
36  void loop(time_t now);
37  void html_info(String& tmpstr);
38 
39 
40 private:
42  level_t level[ROTARY_MAXLEVEL+1];
44  uint8_t cur_level = 0;
46  uint8_t max_level = 0;
48  unsigned long millis_Button_pressed = 0;
50  bool wasButtonDown = false;
51  uint8_t isChanged = 0;
52  bool rotChanged = false;
53 // time_t timeout_cnt;
54  uint8_t pin_a;
55  uint8_t pin_b;
56  uint8_t pin_sw;
57  uint8_t pin_mode;
58  uint8_t raw_a;
59  uint8_t raw_b;
60  uint8_t raw_sw;
61  uint8_t raw_val;
62  uint8_t raw_val_old;
63  uint16_t rot_val;
64  uint16_t rot_max_val;
65  uint16_t rot_min_val;
66 
67  void read();
68 };
69 
70 #endif
71 #endif
time_t now
Eine Variable für Zeitinformationen.
Definition: main.h:115
void loop()
Die Hauptschleife.
Definition: main.cpp:564