标题:
mpu6050体感云台 STM32源程序
[打印本页]
作者:
young962464
时间:
2020-10-12 11:07
标题:
mpu6050体感云台 STM32源程序
视频链接:
https://www.bilibili.com/video/BV1kv41117Bc
单片机源程序如下:
/*
引脚定义
MPU6050_PIN: SCL:PB(10) SDA:PB(11)
OLED_PIN: SCL:PA(5) SDA:PA(4)
ADC_PIN: CH6:PA(2) CH7:PA(3) CH0:PA(0) CH1:PA(1)
LED_PIN: LED1:PB(12) LED2:PB(13)
KEY_PIN: KEY:PA(8)
PWM_PIN: PA(6) PA(7) PB(0) PB(1)
作者:B站~保你江山半壁 UID:475029472
拿了我的的代码还是给个三连吧!
*/
#include "oled.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "mpu6050.h"
#include "inv_mpu.h"
#include "inv_mpu_dmp_motion_driver.h"
#include "adc.h"
#include "led.h"
#include "key.h"
#include "timer.h"
u8 flag=1;
extern u16 ADC_DMA_IN[4]; //声明外部变量
int main(void)
{
char oledBuf[20];
float Pitch,Roll,Yaw; //欧拉角
LED_Init();
KEY_Init();
TIM3_PWM_Init(1999,719); //定时器3产生PWM初始化,装载值1999,预分频数719,周期20ms
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
delay_init(); //延时初始化
ADC_Configuration();//
OLED_Init();
OLED_ColorTurn(0);//0正常显示,1 反色显示
OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
OLED_Clear();
LED_YON();
while(1)
{
if(KEY1 == 0)
{
delay_ms(20);
if(KEY1 == 0)
{
flag=!flag;
LED1 =!LED1;
LED2 =!LED2;
OLED_Clear();
if(flag == 0)
{
MPU_Init(); //初始化MPU6050
mpu_dmp_init();
}
while(!KEY1);
}
}
if(flag == 1)
{
sprintf(oledBuf,"YAO_GAN");
OLED_ShowString(32,0,(u8*)oledBuf,16);//OLED第一行
sprintf(oledBuf," YG_1 | YG_2");
OLED_ShowString(0,16,(u8*)oledBuf,16);//OLED第二行
sprintf(oledBuf,"X:%4d | X:%4d",ADC_DMA_IN[0],ADC_DMA_IN[2]);
OLED_ShowString(0,32,(u8*)oledBuf,16);//OLED第三行
sprintf(oledBuf,"Y:%4d | Y:%4d",ADC_DMA_IN[1],ADC_DMA_IN[3]);
OLED_ShowString(0,48,(u8*)oledBuf,16);//OLED第四行
OLED_Refresh();
TIM_SetCompare1(TIM3,(int)((ADC_DMA_IN[0]*1000)/20475+50));
TIM_SetCompare2(TIM3,(int)((ADC_DMA_IN[1]*1000)/20475+50));
TIM_SetCompare3(TIM3,(int)((ADC_DMA_IN[2]*1000)/20475+50));
TIM_SetCompare4(TIM3,(int)((ADC_DMA_IN[3]*1000)/20475+50));
}//(int)(((float)ADC_DMA_IN[0])/20.475+50)
else
{
// delay_ms(2);
mpu_dmp_get_data(&Pitch,&Roll,&Yaw);
sprintf(oledBuf,"MPU6050");
OLED_ShowString(32,0,(u8*)oledBuf,16);//OLED第一行
sprintf(oledBuf,"X:%.2f ",Pitch);
OLED_ShowString(0,16,(u8*)oledBuf,16);//OLED第二行
sprintf(oledBuf,"Y:%.2f ",Roll);
OLED_ShowString(0,32,(u8*)oledBuf,16);//OLED第三行
sprintf(oledBuf,"Z:%.2f ",Yaw);
OLED_ShowString(0,48,(u8*)oledBuf,16);//OLED第四 行
OLED_Refresh();
TIM_SetCompare2(TIM3,(int)((Roll+90)*10/9+50));
TIM_SetCompare3(TIM3,(int)((Pitch+90)*10/9+50));
TIM_SetCompare4(TIM3,(int)((Yaw+90)*10/9+50));
}
}
}
复制代码
所有代码51hei提供下载:
MPU6050_YG_CONTROL.7z
(251.48 KB, 下载次数: 52)
2020-10-12 22:14 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1