#include <ESP32Servo.h>//需要安装ESP32Servo库

const int servoPin = 18;//控制舵机引脚

Servo servo;

void setup() {
  servo.attach(servoPin, 500, 2500);//设置舵机关联引脚,并设置最大值和最小值
}

int pos = 0;//定义一个变量来存储舵机转动角度

void loop() {
  for (pos = 0; pos < 180; pos += 1) {//让舵机从0度转动到180度
    servo.write(pos);
    delay(15);
  }
  for (pos = 180; pos > 0; pos -= 1) {//让舵机从180度转动到0度
    servo.write(pos);
    delay(15);
  }
}


/*
#define SERVO_PIN 18 //控制舵机的PWM引脚
#define SERVO_CHN 0  //PWM通道
#define SERVO_FRQ 50 //PWM频率
#define SERVO_BIT 12 //PWM占空比控制精度

void servo_set_pin(int pin);     //舵机引脚初始化函数
void servo_set_angle(int angle); //舵机角度设置函数

void setup() {
  servo_set_pin(SERVO_PIN);
}

void loop() {
  for (int i = 0; i < 180; i++) { //让舵机从0度转动到180度
    servo_set_angle(i);
    delay(10);
  }
  for (int i = 180; i > 0; i--) { //让舵机从180度转动到0度
    servo_set_angle(i);
    delay(10);
  }
}

//舵机引脚初始化函数
void servo_set_pin(int pin) {
  ledcSetup(SERVO_CHN, SERVO_FRQ, SERVO_BIT);
  ledcAttachPin(pin, SERVO_CHN);
}

//舵机角度设置函数
void servo_set_angle(int angle) {
  if (angle > 180 || angle < 0)
    return;
  long pwm_value = map(angle, 0, 180, 103, 512);
  ledcWrite(SERVO_CHN, pwm_value);
}
*/