ESP8266_pwm控制用法
一般舵机的控制pwm为50hz,对应时间为0.5ms-2.5ms;0.5ms为0度,1.5ms为90度,2.5ms为180度,所以可以用Servo 库,这个库专门用来控制舵机。
例如:方法一
这是控制0-180舵机的用法,此方法为50hz—>0.5-2.5ms
#include <Servo.h>
// 创建一个舵机对象
Servo myServo;
// 定义舵机控制引脚,这里使用D2(GPIO4)
const int servoPin = D2;
void setup() {
// 将舵机连接到指定引脚
myServo.attach(servoPin);
}
void loop() {
// 舵机转动到0度位置
myServo.write(0);
// 延迟1秒
delay(1000);
// 舵机转动到90度位置
myServo.write(90);
// 延迟1秒
delay(1000);
// 舵机转动到180度位置
myServo.write(180);
// 延迟1秒
delay(1000);
}
例如:方法二
这是控制0-180舵机的用法,此方法为50hz—>0.5-2.5ms,相比方法一,这个方法精度更高
#include <Servo.h>
// 创建一个舵机对象
Servo myServo;
// 定义舵机控制引脚,这里使用D2(GPIO4)
const int servoPin = D2;
void setup() {
// 将舵机连接到指定引脚
myServo.attach(servoPin);
}
void loop() {
// 舵机转动到0度位置
myServo.writeMicroseconds(500); //设置500us=0.5ms
// 延迟1秒
delay(1000);
// 舵机转动到90度位置
myServo.writeMicroseconds(1500); //设置1500us=1.5ms
// 延迟1秒
delay(1000);
// 舵机转动到180度位置
myServo.writeMicroseconds(2500); //设置2500us=2.5ms
// 延迟1秒
delay(1000);
}
例如:方法三
这是控制0-180舵机的用法,此方法为100hz—>0.5-2.5ms,相比方法一二,这个方法精度高,而且可以设置频率,可以控制电调,pwm输出控制范围0-1023,100为1ms,200为2ms,适用于控制电调;pwm输出控制范围0-1023,50为0.5ms,250为2.5ms,适用于控制舵机;
const int pwmPin = 5;
int serialData=128;
void setup() {
Serial.begin(115200);
// 将指定引脚设置为输出模式
pinMode(pwmPin, OUTPUT);
analogWriteFreq(100); //设置pwm频率为100hz,最低能设置100hz 最大37khz左右
}
void loop() {
analogWrite(pwmPin, serialData);//pwm输出控制范围0-1023,100为1ms,200为2ms,适用于控制电调舵机
// Serial.println(digitalRead(pwmPin));
Serial.println(serialData);
if(Serial.available()>0)
{
serialData = Serial.parseInt(); // 使用parseInt查找接收到的信息中的整数
while(Serial.available()>0)Serial.read();
}
}