找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3114|回复: 2
收起左侧

STM32平衡小车程序与安卓APP源码

[复制链接]
ID:385597 发表于 2019-1-9 13:19 | 显示全部楼层 |阅读模式
内含Android控制APP,近期编写的现在分享给大家

0.png
安卓app源码

0.png

单片机源程序如下:
  1. #include "stm32f10x.h"
  2. #include "inv_mpu_dmp_motion_driver.h"
  3. #include "math.h"
  4. #include "inv_mpu.h"
  5. #include "oled.h"
  6. #include "delay.h"
  7. #include "adc.h"
  8. #include "motor.h"
  9. #include "mpuiic.h"
  10. #include "mpu6050.h"
  11. #include "timer.h"
  12. #include "usart1.h"

  13. extern int Moto1,Moto2;      //电机PWM变量 应是Motor的 向Moto致敬       
  14. extern u8 data[2];           //WIFI数据
  15. short aacx=0,aacy=0,aacz=0;         //加速度值
  16. float pitch,roll,yaw=0;      //欧拉角
  17. short y_angle=0;             //Y轴角度
  18. int TIM_2=0,TIM_4=0;         //编码器脉冲数
  19. int Battery=0;               //电池电压
  20. int Balance_PWM=0;           //角度环输出脉冲
  21. int Velocity_PWM=0;          //速度环输出脉冲
  22. int Turn_PWM=0;              //转向变量

  23. int main(void)
  24. {       

  25.        
  26.         delay_init();                  //延时函数初始化       
  27.         OLED_Init();            //OLED初始化
  28.   MiniBalance_PWM_Init(7199,0);
  29.         Encoder_Init_TIM2();    //初始化编码器左
  30.         Encoder_Init_TIM4();    //初始化编码器右
  31.         USART1_Init(115200);    //初始化串口1
  32.         ESP8266_Init();         //初始化ESP8266参数
  33.         Adc_Init();             //ADC初始化
  34.         MPU_Init();             //MPU6050参数初始化
  35.         mpu_dmp_init();         //MPU6050_DMP初始化
  36.         TIM1_Int_Init(4999,71); //5ms的定时器中断
  37.         OLED_Fill(0x00);        //清屏
  38.         OLED_Str_8x16(0,0,"Battery:");
  39.         OLED_Str_8x16(80,0,".");
  40.         OLED_Str_8x16(96,0,"V");
  41.         while(1)
  42.         {  
  43.        
  44.         Battery=(Get_Adc_Average(8,10)*0.004028)*10;//计算电池电压
  45.         OLED_Number_8x16(64,0,Battery/100);               
  46.         OLED_Number_8x16(72,0,Battery%100/10);
  47.         OLED_Number_8x16(88,0,Battery%10);
  48.         }
  49. }
  50. /*============================= TIM3定时5ms================================*/
  51. void TIM1_UP_IRQHandler(void)   
  52. {

  53.         if (TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET)//判断是否更新中断  
  54.         {
  55.         TIM_ClearITPendingBit(TIM1, TIM_IT_Update);//清除中断标志位
  56.         TIM_2=-Read_Encoder(2);//获取右轮脉冲值
  57.         TIM_4=Read_Encoder(4);//获取左轮脉冲值
  58.         if(mpu_dmp_get_data(&pitch,&roll,&yaw)==0&&MPU_Get_Gyroscope(&aacx,&aacy,&aacz)==0)//获取欧拉角和加速度值
  59.         {       
  60.          
  61.          Balance_PWM=balance(roll,aacx);//直立环
  62.          Velocity_PWM=velocity(TIM_2,TIM_4);//速度环
  63.    Moto1=Balance_PWM-Velocity_PWM+Turn_PWM;//计算右轮PWM值
  64.          Moto2=Balance_PWM-Velocity_PWM-Turn_PWM;//计算左轮PWM值
  65.          Xianfu_Pwm();//PWM限幅
  66.          Set_Pwm(Moto1,Moto2);//赋值给PWM寄存器
  67.    Motor_Off(roll); //实时监测角度 大于或小于50度时 强制停止电机
  68.         }
  69.        
  70.         }
  71. }
复制代码

所有资料51hei提供下载:
平衡小车APP.7z (5.07 MB, 下载次数: 33)
平衡小车STM32程序.7z (252.55 KB, 下载次数: 43)





回复

使用道具 举报

ID:493408 发表于 2019-5-11 23:35 | 显示全部楼层
老哥,下了你的程序不能用,能联系一下吗,
回复

使用道具 举报

ID:493408 发表于 2019-5-11 23:36 | 显示全部楼层
老哥,下了你的资料不能回复,能联系交流一下吗,非常感谢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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