ESP8266_pwm控制电调舵机的用法

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();
  }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值