arduino环境下利用ESP32控制舵狗(初始位置的调试)

ESP32输出PWM波需要用到ledc函数

下面先对ledc函数做一下介绍

ledcSetup(channel0, freq0, resolution0);

ledcAttachPin(DJ0_PWM, channel0);

ledcWrite(channel0,dutyCycle0);

第一个是设置通道、频率和分辨率的函数。

channel用来设置输出PWM波的通道。

freq设置频率,这里将频率设置成50也就是周期20ms用来控制舵机。

resolution设置分辨率,分辨率能够大致理解成决定将周期分成多少份,计算方法为2^resolution,因为取值时是从0开始的,所以需要再-1我设置成10,也就是可以分成1024份,于是可以取0~1023的值。

第二个是通道与引脚相关联的函数

DJ0_PWM处设置ESP32的引脚。

channel决定引脚与那个通道相连。

第三个是设置通道输出PWM波的占空比。

channel设置是哪个通道。

dutyCycle设置占空比,之前我们用的分辨率为10,所以这里占空比取0~1023,控制舵机需要0ms~2.5ms所以将1024/40=25.6,每个25.6代表的就是0.5ms,因为取值是0~1023所以25.6近似成25,那么如果想让舵机转到-90°就需要将dutyCycle设置成25,以此类推。

下面附完整程序

#include <Arduino.h>

#include <WiFi.h>

#define DJ0_PWM 13

int freq = 50;

int freq0 = freq;    // 频率

int channel0 = 0;    // 通道0,共16个通道,0~15

int resolution0 = 10;  // 分辨率,取值0~20,duty最大取值为2^resolution-1

void ledc_Initialization() // ledc初始化程序

{

  ledcSetup(channel0, freq0, resolution0); // 设置通道0

  ledcAttachPin(DJ0_PWM, channel0);  // 将通道0与引脚13连接

}

int dutyCycle0 = 76;  // 设置占空比

void setup()

{

  ledc_Initialization();  // ledc初始化程序

}

void loop()

{

  ledcWrite(channel0, dutyCycle0);  // 输出PWM,dutyCycle为占空比

  delay(5);

}

通过不断改变数值来找到腿的初始状态

当找到每一个舵机的初始位置后就可以进行下一步逆运动学的编写了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容