Generate RC servo signal on a selected pins with ESP32 device and Arduino framework.
Base on servo library for stm32f4 (d2a4a47).
The interface is similar to Arduino/Servo: https://www.arduino.cc/en/Reference/Servo
But the function attach() is different:
bool attach(
int pin,
int channel = CHANNEL_NOT_ATTACHED,
int minAngle = DEFAULT_MIN_ANGLE,
int maxAngle = DEFAULT_MAX_ANGLE,
int minPulseWidthUs = DEFAULT_MIN_PULSE_WIDTH_US,
int maxPulseWidthUs = DEFAULT_MAX_PULSE_WIDTH_US,
int frequency = DEFAULT_FREQUENCY
);More information in source code documentation.
Example: 04-SimpleServoAngles
There are also a ServoFloat and ServoDouble variant available. Use one of these when working in radians.
Example: : 05-SimpleServoRadians
According testings, the frequency for ESP32 S2/S3/C3 has to be set at least to 200 Hz. Here is an example, how to set just frequency:
Servo servo1;
const int servoPin = 4;
const int frequency = 200; // Hz
servo1.attach(
servoPin,
Servo::CHANNEL_NOT_ATTACHED,
Servo::DEFAULT_MIN_ANGLE,
Servo::DEFAULT_MAX_ANGLE,
Servo::DEFAULT_MIN_PULSE_WIDTH_US,
Servo::DEFAULT_MAX_PULSE_WIDTH_US,
frequency
);For more information look at the PR25
This library is also available at the PlatformIO as ServoESP32.
This library is available in Arduino IDE Library Manager as ServoESP32.
There was an issue with building this library in Arduino IDE 1.8.10. But this issue should be fixed in Arduino IDE 1.8.11.