/* * ESP32PWM.h * * Created on: Sep 22, 2018 * Author: hephaestus */ #ifndef LIBRARIES_ESP32SERVO_SRC_ESP32PWM_H_ #define LIBRARIES_ESP32SERVO_SRC_ESP32PWM_H_ #include "esp32-hal-ledc.h" #define NUM_PWM 16 #define PWM_BASE_INDEX 0 #define USABLE_ESP32_PWM (NUM_PWM-PWM_BASE_INDEX) #include #include "Arduino.h" class ESP32PWM { private: void attach(int pin); int pwmChannel = 0; // channel number for this servo bool attachedState = false; int pin; uint8_t resolutionBits; double myFreq; int allocatenext(double freq); static double _ledcSetupTimerFreq(uint8_t chan, double freq, uint8_t bit_num); bool checkFrequencyForSideEffects(double freq); void adjustFrequencyLocal(double freq, float dutyScaled); static float mapf(float x, float in_min, float in_max, float out_min, float out_max) { if(x>in_max) return out_max; if(x= 12) && (pin <= 19)) || //8 ((pin >= 21) && (pin <= 23)) || //3 ((pin >= 25) && (pin <= 27)) || //3 (pin == 32) || (pin == 33)) //2 return true; return false; } static int channelsRemaining() { return NUM_PWM - PWMCount; } }; ESP32PWM* pwmFactory(int pin); #endif /* LIBRARIES_ESP32SERVO_SRC_ESP32PWM_H_ */