ServoESP32

⚙️ Generate RC servo signal on a selected pins with ESP32 device and Arduino framework.

Language:

C++

Created:

06.07.2017

Updated:

20.10.2023

Stars:

134

Visit on GitHub

ServoESP32 Build Status

Generate RC servo signal on a selected pins with ESP32 device and Arduino framework.

Base on servo library for stm32f4 (d2a4a47).

Interface

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

IMPORTANT INFO

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

PlatformIO

This library is also available at the PlatformIO as ServoESP32.

Arduino IDE

This library is available in Arduino IDE Library Manager as ServoESP32.

Known issues

Problem with build in Arduino IDE 1.8.10

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.