mirror of
https://github.com/BotChain-Robots/firmware.git
synced 2026-07-08 17:47:21 +02:00
37 lines
808 B
C++
37 lines
808 B
C++
//
|
|
// Created by Johnathon Slightham on 2025-07-15.
|
|
//
|
|
|
|
// 180 deg servo
|
|
|
|
#ifndef SERVO1ACTUATOR_H
|
|
#define SERVO1ACTUATOR_H
|
|
|
|
#include "IActuator.h"
|
|
#include "ISensor.h"
|
|
#include "freertos/FreeRTOS.h"
|
|
#include "freertos/task.h"
|
|
#include <atomic>
|
|
#include <cstdint>
|
|
|
|
#define SERVO_MAX_SPEED_DEG_PER_SEC 180.0f
|
|
|
|
class Servo1Actuator final : public IActuator {
|
|
public:
|
|
Servo1Actuator();
|
|
~Servo1Actuator() override;
|
|
void actuate(std::uint8_t *cmd) override;
|
|
std::vector<Flatbuffers::sensor_value> get_sensor_data() override;
|
|
|
|
private:
|
|
static void servo_task(void *args);
|
|
static void write_pwm(float angle);
|
|
|
|
std::atomic<float> m_target{90.0f};
|
|
float m_current{90.0f};
|
|
std::atomic<bool> m_running{true};
|
|
TaskHandle_t m_servo_task{nullptr};
|
|
};
|
|
|
|
#endif //SERVO1ACTUATOR_H
|