The ESP has for sure the capability to run tiny servo motors with a little effort of code. With the use of the ESP32Servo library, we can utilize the internal timer functions of the ESP to run with very fast results, that do not interfere with other code. yeah.
// we use the ESP32 Servo Lib (add to your libaries! ) to utilize the intgrated timer functions of the ESP to be cool :) #include <ESP32Servo.h> Servo myservo; // create servo object to control a servo // 16 servo objects can be created on the ESP32 int pos = 0; // variable to store the servo position // Recommended PWM GPIO pins on the ESP32 include 2,4,12-19,21-23,25-27,32-33 int servoPin = 13; void setup() { // Allow allocation of all timers ESP32PWM::allocateTimer(0); ESP32PWM::allocateTimer(1); ESP32PWM::allocateTimer(2); ESP32PWM::allocateTimer(3); myservo.setPeriodHertz(50); // standard 50 hz servo myservo.attach(servoPin, 500, 2400); // attaches the servo on pin 13 to the servo object // using default min/max of 1000us and 2000us // different servos may require different min/max settings // for an accurate 0 to 180 sweep } void loop() { for (pos = 0; pos <= 180; pos += 2) { // goes from 0 degrees to 180 degrees // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } for (pos = 180; pos >= 0; pos -= 2) { // goes from 180 degrees to 0 degrees myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } }