找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2160|回复: 0
打印 上一主题 下一主题
收起左侧

STM32+MPU6050驱动舵机程序

[复制链接]
跳转到指定楼层
楼主
ID:977469 发表于 2021-12-6 19:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include "all.h"
  2. #include "timer.h"
  3. #include "pwm.h"
  4. #include "delay.h"
  5. #include "usart.h"
  6. #include "I2C.h"
  7. #include "math.h"
  8. #include "key.h"
  9. #include "mpu6050.h"  
  10. #include "inv_mpu.h"
  11. #include "inv_mpu_dmp_motion_driver.h"
  12. #include "OLED_I2C.h"




  13. int main(void)
  14. {       
  15.         float pitch,roll,yaw;int t=0,s=0;
  16.         char YAW[10]={0},PITCH[10]={0},ROLL[10]={0};
  17.         SystemInit();
  18.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  19.         delay_init();
  20.         uart_init(115200);
  21.         TIM3_PWM_Init(1999,719);
  22.         TIM2_PWM_Init(1999,719);
  23.         TIM4_Int_Init(999,7199);
  24.         KEY_Init();
  25.         MPU_Init();
  26.         I2C_Configuration();//OLED
  27.         OLED_Init();
  28.   OLED_CLS();//清屏

  29.         while(mpu_dmp_init())
  30.         {
  31.                 OLED_ShowStr(0,0,"MPU6050 Error",2);
  32.                 delay_ms(200);
  33.         }  
  34.                 OLED_CLS();
  35.                 OLED_ShowStr(0,0,"MPU6050 OK",1);       
  36.                 OLED_ShowStr(0,2,"yaw",1);OLED_ShowStr(0,1,"pitch",1);OLED_ShowStr(0,3,"roll",1);       
  37.         while(1)
  38.         {
  39.                 if(flag==0&&KEY1==1)
  40.                                 {
  41.                                         s=s+50;
  42.                                         while(KEY1);
  43.                                         if(s>=300)s=0;
  44.                                         TIM_SetCompare1(TIM3,s);
  45.                                        
  46.                                 }
  47.                 if(mpu_dmp_get_data(&pitch,&roll,&yaw)==0&&flag==1)
  48.                 {
  49.                        
  50.                         TIM_SetCompare1(TIM3,(int)(yaw+107));
  51.                         TIM_SetCompare2(TIM3,(int)(pitch+93));
  52.                         TIM_SetCompare2(TIM2,(int)(-roll+67));
  53.                 }
  54.                 if(t%10==0&&mpu_dmp_get_data(&pitch,&roll,&yaw)==0)
  55.                 {
  56.                         sprintf(YAW,"%6.1f",yaw);OLED_ShowStr(30,2,YAW,1);
  57.                         sprintf(PITCH,"%6.1f",pitch);OLED_ShowStr(30,1,PITCH,1);
  58.                         sprintf(ROLL,"%6.1f",roll);OLED_ShowStr(30,3,ROLL,1);
  59.                        
  60.                         t=0;
  61.                 }
  62.                 t++;
  63.                
  64.         }
  65. }
复制代码

Keil代码下载: c8t6通过传感器控制舵机.7z (274.83 KB, 下载次数: 74)

评分

参与人数 1黑币 +10 收起 理由
admin + 10 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表