//第一节
#define freq 50//频率20ms
#define channel 0//通道号
#define reso 8//分辨率8,表示2的8字方
#define servo 13//舵机引脚
int calculatePWM(int degree){
int min_width=0.5/20*pow(2,reso);
int max_width=2.5/20*pow(2,reso);
return (max_width-min_width)*degree/180+min_width;
}
void setup() {
// put your setup code here, to run once:
//Serial.begin(115200);
//Serial.println("Hello, ESP32!");
//建立ledc函数
ledcSetup(channel,freq,reso);
//关联gpio口与ledc通道
ledcAttachPin(servo,channel);
}
void loop() {
for(int i=0;i<180;i+=30){
ledcWrite(channel,calculatePWM(i));
delay(500);
}
}
/*//第二节
#include <Servo.h>
//定义对象
Servo my_servo;
#define servo_pin 13
#define max_width 2500
#define min_width 500
void setup(){
//分配硬件定时器
ESP32PWM::allocatetimer(0);
//设置频率
my_servo.setPeriodHertz(50);
//关联servo与gpio引脚,设置脉宽范围
my_servo.attach(servo_pin,min_width,max_width);
}
void loop(){
my_servo.write(180);
delay(1000);
my_servo.write(0);
delay(1000);
}*/