基本信息
源码名称:PID调节电机转速 配合MPU6050
源码大小:8.87M
文件格式:.zip
开发语言:C/C++
更新时间:2019-03-04
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 1 元×
微信扫码支付:1 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
#include "timer.h"
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "pid.h"
#include "mpu6050.h"
#include "inv_mpu.h"
#include "inv_mpu_dmp_motion_driver.h"
#include "motor.h"
#include "math.h"
#include "oled.h"
#include "key.h"
int main()
{
extern float val;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
MPU_Init(); //初始化MPU6050
LED_Init(); //LED端口初始化
TIM3_PWM_Init(1899,0); //不分频。PWM频率=72000000/900=80Khz
OLED_Init();
Pid_init();
Motor_init();
while(mpu_dmp_init());
LED0 = 0;
TIM6_init(9,3599);
TIM_Cmd(TIM6,DISABLE);
KEY_Init();
OLED_ShowString(0,0,"yaw = ",24);
OLED_ShowString(0,24,"val = ",24);
OLED_Refresh_Gram(); //更新显示到OLED
while(1)
{
if(KEY0==0)
{
delay_ms(10);
if(KEY0==0)
{
TIM_Cmd(TIM6,ENABLE);
}
while(!KEY0);
}
if(KEY1==0)
{
delay_ms(10);
if(KEY1==0)
{
TIM6_init(0,3599);
Motor1_A=1;
Motor1_B=0;
Motor2_A=1;
Motor2_B=0;
Motor3_A=1;
Motor3_B=0;
TIM_SetCompare1(TIM3,1100);
TIM_SetCompare2(TIM3,1100);
TIM_SetCompare3(TIM3,1100);
}
while(!KEY1);
if(KEY0==0)
{
delay_ms(10);
if(KEY0==0)
{
Motor1_A=0;
Motor1_B=1;
Motor2_A=1;
Motor2_B=0;
Motor3_A=1;
Motor3_B=1;
TIM_SetCompare1(TIM3,1250);
TIM_SetCompare2(TIM3,1250);
TIM_SetCompare3(TIM3,1250);
}
}
while(!KEY0);
}
if(WK_UP==1)
{
delay_ms(10);
if(WK_UP==1)
{
TIM_Cmd(TIM6,DISABLE);
Motor1_A=1;
Motor1_B=1;
Motor2_A=1;
Motor2_B=1;
Motor3_A=1;
Motor3_B=1;
}
while(WK_UP);
}
}
}