You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

30 lines
1.2 KiB

#ifndef _PUSHER_H
#define _PUSHER_H
#include <cstdint>
#include "driver/ledc.h"
#include "semaphore.h"
static constexpr uint16_t PROGMEM MIN_PULSE_MS = 544; // the shortest pulse sent to a servo
static constexpr uint16_t PROGMEM MAX_PULSE_MS = 2400; // the longest pulse sent to a servo
static constexpr uint16_t PROGMEM DEFAULT_PULSE_MS = 1500; // default pulse width
static constexpr int PROGMEM TIMER_WIDTH = LEDC_TIMER_15_BIT;
static constexpr uint16_t PROGMEM MIN_PULSE_WIDTH = (1 << TIMER_WIDTH) * MIN_PULSE_MS / 20000; // the shortest pulse sent to a servo
static constexpr uint16_t PROGMEM MAX_PULSE_WIDTH = (1 << TIMER_WIDTH) * MAX_PULSE_MS / 20000; // the longest pulse sent to a servo
static constexpr uint16_t PROGMEM DEFAULT_PULSE_WIDTH = (1 << TIMER_WIDTH) * DEFAULT_PULSE_MS / 20000; // default pulse width
static constexpr TickType_t PROGMEM TIMEOUT = portMAX_DELAY;
static constexpr uint8_t PROGMEM channel = LEDC_CHANNEL_5; // 13 // beware: some channels interfere with the rmt peripheral used by FastLED
class Pusher {
public:
Pusher(void);
void setup(void);
void push(int);
private:
volatile SemaphoreHandle_t xSemaphore;
};
#endif /* _PUSHER_H */