ESP32蓝牙控制三轮小车(非自平衡、带万向辅助轮)

一、在PWM示例程序的基础上,编写moto_control.h  moto_control.cpp。

pwm.h、pwm.cpp 包含两个函数,一个是初始化,一个是设置占空比。这可以直接拿来控制电机用。

#ifndef _pwm_H
#define _pwm_H

#include "public.h"


//函数声明
void pwm_init(u8 pin,u8 chanel,u8 freq,u8 resolution);
void pwm_set_duty(u8 chanel,u16 duty);

#endif
#include "pwm.h"

//PWM初始化
//pin:引脚号
//chanel:PWM输出通道0-15
//freq:PWM输出频率,单位HZ
//resolution:PWM占空比的分辨率1-16,比如设置8,分辨率范围0-255
void pwm_init(u8 pin,u8 chanel,u8 freq,u8 resolution)
{
  ledcSetup(chanel, freq, resolution);// PWM初始化
  ledcAttachPin(pin, chanel);// 绑定PWM通道到GPIO上
}

//PWM占空比设置
void pwm_set_duty(u8 chanel,u16 duty)
{
  ledcWrite(chanel,duty);// 改变PWM的占空比
}

moto_control.h  moto_control.cpp  代码如下:

#ifndef _MOTO_CONTROL_H
#define _MOTO_CONTROL_H

#include "public.h"
#include "pwm.h"

//控制管脚定义
#define MOTO_A1  15
#define MOTO_A2  4
#define MOTO_B1  16
#define MOTO_B2  17

//PWM通道定义
#define PWM0     0
#define PWM1     1
#define PWM2     2
#define PWM3     3

//函数声明
void moto_init(void);

void turn_left(void);
void turn_right(void);
void stop_A(void);
void stop_B(void);
void stop_all(void);

void Forward(void);
void Backward(void);


#endif

#include "moto_control.h"

//led初始化
void moto_init(void)
{
  pinMode(MOTO_A1, OUTPUT);//设置引脚为输出模式
  pinMode(MOTO_A2, OUTPUT);//设置引脚为输出模式
  pinMode(MOTO_B1, OUTPUT);//设置引脚为输出模式
  pinMode(MOTO_B2, OUTPUT);//设置引脚为输出模式
}

void turn_left(void){         //左轮反转、右轮正转
  pwm_set_duty(PWM0,1000);   
  pwm_set_duty(PWM1,0);       //MOTO_A2设为低电平
  pwm_set_duty(PWM2,0);         //MOTO_B1设为低电平
  pwm_set_duty(PWM3,0);         //MOTO_B1设为低电平
  // for(int i=0;i<1000;i+=10){  //调节MOTO_A1占空比    MOTO_A1 MOTO_A2  =  10   电机反转  可变速
  //   pwm_set_duty(PWM0,i);
  //   pwm_set_duty(PWM3,i);
  //   delay(10);
  // }
  
  delay(100);//调节延时,可控制转弯角度
  stop_all();
}

void turn_right(void){        //左轮正转、右轮反转
  pwm_set_duty(PWM0,0);   
  pwm_set_duty(PWM1,0);       //MOTO_A2设为低电平
  pwm_set_duty(PWM2,1000);         //MOTO_B1设为低电平
  pwm_set_duty(PWM3,0);         //MOTO_B1设为低电平
  // for(int i=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值