Create servo configuration
This commit is contained in:
parent
d13bf67443
commit
b99245085e
@ -3,6 +3,39 @@
|
||||
#include <stdint.h>
|
||||
#include <ESP32Servo.h> // To control the servo
|
||||
|
||||
typedef struct ServoConfiguration {
|
||||
/**
|
||||
* @brief The timer to use for the servo control
|
||||
* number 0-3 indicating which timer to allocate in this library
|
||||
*/
|
||||
int pwmTimer;
|
||||
|
||||
/**
|
||||
* @brief The servo frequency (depending on the model used)
|
||||
*/
|
||||
int pwmFrequency;
|
||||
|
||||
/**
|
||||
* @brief The pin where the servo PWM line is connected
|
||||
*/
|
||||
int pin;
|
||||
|
||||
/**
|
||||
* @brief The duration (in ms) for which the button should remain pressed
|
||||
*/
|
||||
uint32_t openDuration;
|
||||
|
||||
/**
|
||||
* @brief The servo value (in µs) that specifies the 'pressed' state
|
||||
*/
|
||||
int pressedValue;
|
||||
|
||||
/**
|
||||
* @brief The servo value (in µs) that specifies the 'released' state
|
||||
*/
|
||||
int releasedValue;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief A controller for the button control servo
|
||||
*
|
||||
@ -17,22 +50,16 @@ class ServoController {
|
||||
public:
|
||||
|
||||
/**
|
||||
* @brief Construct a new Servo Controller object
|
||||
*
|
||||
* @param timer The timer to use for the servo control
|
||||
* @param frequency The servo frequency (depending on the model used)
|
||||
* @param pin The pin where the servo PWM line is connected
|
||||
* @brief Construct a new servo controller
|
||||
*/
|
||||
ServoController(int timer, int frequency, int pin);
|
||||
ServoController();
|
||||
|
||||
/**
|
||||
* @brief Configure the button values
|
||||
* @brief Configure the servo
|
||||
*
|
||||
* @param openDuration The duration (in ms) for which the button should remain pressed
|
||||
* @param pressedValue The servo value (in µs) that specifies the 'pressed' state
|
||||
* @param releasedValue The servo value (in µs) that specifies the 'released' state
|
||||
* @param The configuration for the servo
|
||||
*/
|
||||
void configure(uint32_t openDuration, int pressedValue, int releasedValue);
|
||||
void configure(ServoConfiguration configuration);
|
||||
|
||||
/**
|
||||
* @brief Update the servo state periodically
|
||||
@ -60,12 +87,6 @@ private:
|
||||
// Indicator that the door button is pushed
|
||||
bool buttonIsPressed = false;
|
||||
|
||||
int timer;
|
||||
|
||||
int frequency;
|
||||
|
||||
int pin;
|
||||
|
||||
uint32_t openDuration = 0;
|
||||
|
||||
int pressedValue = 0;
|
||||
|
12
src/main.cpp
12
src/main.cpp
@ -23,7 +23,7 @@ TimeCheck timeCheck{};
|
||||
|
||||
ServerConnection server(serverUrl, serverPort, serverPath);
|
||||
|
||||
ServoController servo(pwmTimer, servoFrequency, servoPin);
|
||||
ServoController servo{};
|
||||
|
||||
AsyncWebServer local(localPort);
|
||||
|
||||
@ -40,7 +40,15 @@ void setup() {
|
||||
Serial.setDebugOutput(true);
|
||||
Serial.println("[INFO] Device started");
|
||||
|
||||
servo.configure(lockOpeningDuration, servoPressedState, servoReleasedState);
|
||||
ServoConfiguration servoConfig;
|
||||
servoConfig.pwmTimer = pwmTimer;
|
||||
servoConfig.pwmFrequency = servoFrequency;
|
||||
servoConfig.pin = servoPin;
|
||||
servoConfig.openDuration = lockOpeningDuration;
|
||||
servoConfig.pressedValue = servoPressedState;
|
||||
servoConfig.releasedValue = servoReleasedState;
|
||||
|
||||
servo.configure(servoConfig);
|
||||
Serial.println("[INFO] Servo configured");
|
||||
|
||||
controller.configure();
|
||||
|
@ -2,18 +2,15 @@
|
||||
|
||||
#include <esp32-hal.h> // For `millis()`
|
||||
|
||||
ServoController::ServoController(int timer, int frequency, int pin)
|
||||
: timer(timer), frequency(frequency), pin(pin) {
|
||||
|
||||
}
|
||||
ServoController::ServoController() { }
|
||||
|
||||
void ServoController::configure(uint32_t openDuration, int pressedValue, int releasedValue) {
|
||||
this->openDuration = openDuration;
|
||||
this->pressedValue = pressedValue;
|
||||
this->releasedValue = releasedValue;
|
||||
ESP32PWM::allocateTimer(timer);
|
||||
servo.setPeriodHertz(frequency);
|
||||
servo.attach(pin);
|
||||
void ServoController::configure(ServoConfiguration configuration) {
|
||||
openDuration = configuration.openDuration;
|
||||
pressedValue = configuration.pressedValue;
|
||||
releasedValue = configuration.releasedValue;
|
||||
ESP32PWM::allocateTimer(configuration.pwmTimer);
|
||||
servo.setPeriodHertz(configuration.pwmFrequency);
|
||||
servo.attach(configuration.pin);
|
||||
releaseButton();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user