-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathServoHVController.h
58 lines (48 loc) · 1.36 KB
/
ServoHVController.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#ifndef ServoHVController_h
#define ServoHVController_h
#include <Arduino.h>
#include <ArduinoJson.h>
#include "BaseController.h"
#define MIN_PULSE_WIDTH 1500 // the shortest pulse sent to a servo
#define MAX_PULSE_WIDTH 8500 // the longest pulse sent to a servo
#define DEFAULT_PULSE_WIDTH 1500 // default pulse width when servo is attached
#define MIN_SERVO_VAL 0
#define MAX_SERVO_VAL 180
#define SERVO_BITS 16
#define SERVO_FREQ 50
#define CALC_SERVO_PULSE(val) map(val,MIN_SERVO_VAL,MAX_SERVO_VAL,MIN_PULSE_WIDTH,MAX_PULSE_WIDTH)
struct ServoHVState
{
bool isOn = true;
int posH = 90;
int posV = 90;
};
enum ServoHVCMD { ServoSet,ServoSetH,ServoSetV,ServoOff, ServoSaveState = 4096 };
class ServoHVController;
typedef CController<ServoHVController, ServoHVState, ServoHVCMD> Servo;
class ServoHVController : public Servo
{
public:
ServoHVController();
virtual String serializestate();
virtual bool deserializestate(String jsonstate, CmdSource src = srcState);
virtual void setup();
virtual void loadconfig(JsonObject& json);
virtual void getdefaultconfig(JsonObject& json);
virtual void run();
virtual void set_state(ServoHVState state);
protected:
int pin;
int pinV;
int pinH;
int channelV;
int channelH;
int delayOnms;
long nextOff;
int minH;
int maxH;
int minV;
int maxV;
};
DEFINE_CONTROLLER_FACTORY(ServoHVController)
#endif