MRMS
mrm-servo.h
1 #pragma once
2 #include "Arduino.h"
3 #include <esp32-hal-ledc.h>
4 #include <mrm-board.h>
5 
14 #define MAX_SERVO_COUNT 10 // Maximum number of servo motors, the number cannot be bigger than 16 since there are 16 PWM channels in ESP32
15 #define MRM_SERVO_FREQUENCY_HZ 50 // Pulse occures FREQUENCY_HZ times each second. For 50 Hz period of one pulse is 20 ms.
16 
17 typedef bool(*BreakCondition)();
18 
19 class Mrm_servo
20 {
21  uint16_t _minDegrees;
22  float _minDegreesPulseMs;
23  uint16_t _maxDegrees;
24  float _maxDegreesPulseMs;
25  char _name[MAX_SERVO_COUNT][10]; // Device's name
26  int nextFree;
27  uint8_t _timerWidth;
28  Robot* robotContainer;
29  float f;
30 
31 public:
35  Mrm_servo(Robot* robot = NULL);
36 
37  ~Mrm_servo();
38 
48  void add(uint8_t gpioPin = 16, char* deviceName = (char *)"", uint16_t minDegrees = 0, uint16_t maxDegrees = 180, float minDegreesPulseMs = 1, float maxDegreesPulseMs = 2, uint8_t timerWidth = 12);
49 
50  void sweep();
51 
54  void test();
55 
60  void write(uint16_t degrees = 90, uint8_t servoNumber = 0);
61 
64  void writeInteractive();
65 };
66 
67 
Definition: mrm-servo.h:20
void writeInteractive()
Definition: mrm-servo.cpp:119
void add(uint8_t gpioPin=16, char *deviceName=(char *)"", uint16_t minDegrees=0, uint16_t maxDegrees=180, float minDegreesPulseMs=1, float maxDegreesPulseMs=2, uint8_t timerWidth=12)
Definition: mrm-servo.cpp:25
Mrm_servo(Robot *robot=NULL)
Definition: mrm-servo.cpp:7
void test()
Definition: mrm-servo.cpp:79
void write(uint16_t degrees=90, uint8_t servoNumber=0)
Definition: mrm-servo.cpp:103
Definition: mrm-robot.h:42