#include <ESP32Servo.h>
// Servo pin definition
const int servoPin = 5; // GPIO pin connected to the servo signal line
// Create servo object
Servo myServo;
// Variables
int position = 0; // Current position in degrees
int increment = 30; // Increment value in degrees
unsigned long lastMoveTime = 0;
const unsigned long moveInterval = 2000; // Time between movements in milliseconds
void setup() {
// Initialize serial communication
Serial.begin(115200);
// Allow allocation of all timers for servo
ESP32PWM::allocateTimer(0);
// Configure servo parameters
// Different servos may require different min/max pulse widths
myServo.setPeriodHertz(50); // Standard 50 Hz servo
myServo.attach(servoPin, 500, 2400); // Attach servo with min/max pulse widths
// Move servo to initial position (0 degrees)
myServo.write(position);
Serial.println("Servo initialized at 0 degrees");
}
void loop() {
Move the servo every moveInterval milliseconds
if (millis() - lastMoveTime >= moveInterval) {
// Move to next position
position += increment;
// If reached or exceeded 180 degrees, reset to 0
if (position > 180) {
position = 0;
}
// Move servo to new position
myServo.write(position);
// Print current position
Serial.print("Moving servo to ");
Serial.print(position);
Serial.println(" degrees");
// Update last move time
lastMoveTime = millis();
}
}