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