|
視頻鏈接: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產(chǎn)生PWM初始化,裝載值1999,預(yù)分頻數(shù)719,周期20ms
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
- uart_init(115200); //串口初始化為115200
- delay_init(); //延時初始化
- ADC_Configuration();//
-
- OLED_Init();
- OLED_ColorTurn(0);//0正常顯示,1 反色顯示
- OLED_DisplayTurn(0);//0正常顯示 1 屏幕翻轉(zhuǎn)顯示
- 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));
- }
-
- }
- }
復(fù)制代碼
所有代碼51hei提供下載:
MPU6050_YG_CONTROL.7z
(251.48 KB, 下載次數(shù): 52)
2020-10-12 22:14 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|