芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

飞芯科技-芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

STM32平衡小车的代码

单片机源程序如下:

  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "lcd.h"
  6. #include "usart.h"
  7. #include "mpu6050.h"   
  8. #include "inv_mpu.h"
  9. #include "inv_mpu_dmp_motion_driver.h"
  10. #include "oled.h"
  11. #include "pwm.h"
  12. #include "function.h"
  13. #include "fuzzy.h"
  14. #include "time.h"
  15. #include "FTM.h"
  16. #include "rtu.h"

  17. char receive;
  18. float result;
  19. angle ress;
  20. p_angle res;
  21. speed_s spe_L;
  22. speed_ss speed_L;
  23. speed_s spe_R;
  24. speed_ss speed_R;
  25. out_b outt;
  26. out_c out;
  27. int ab;
  28. float roll;
  29. int ti=9;
  30. float ta;
  31. int ti_r;
  32. int ti_l;
  33. float CN_timer2;
  34. float CN_timer3;
  35. int time;
  36. int32_t rtu_send[6];
  37. int main(void)
  38. {       
  39.         float mm=0;
  40.         int P=64;
  41.         float I=0;
  42.         float D=0.005;
  43.         float i;
  44.         float d;
  45.         float e;
  46.         int integer,point;
  47.         float pitch,yaw;                 //欧拉角
  48.         short aacx,aacy,aacz;                  //加速度传感器原始数据
  49.         short gyrox,gyroy,gyroz;        //陀螺仪原始数据
  50.         short temp;                                              //温度       
  51.         int m;
  52.   out=&outt;
  53.   res=&ress;
  54.         speed_L=&spe_L;
  55.         speed_R=&spe_R;
  56.         speed_L->speed_last=0;
  57.         speed_R->speed_last=0;
  58.         ta=0;
  59.         ti=80;
  60.         res->angle_sum=0;
  61.         res->angle_error=0;
  62.         res->angle_last=0;
  63.   res->angle_now=0;
  64.         m=0;
  65.   delay_init();        //延时初始化
  66.         OLED_Init();       
  67.         pwm_init();
  68.         time1_init();
  69.         uart_init(115200);
  70.         Hardware_init();
  71.         ti=0;
  72.        
  73.   ab=1000;
  74.   OLED_ShowString(40,2 ,"Stop");
  75.         while(1)
  76.         {
  77. //                if(ti<0)  
  78. //                          ti=0;
  79. //          
  80. //                if(ab>100)
  81. //                        ab=100;
  82. //                  ti=ab;
  83. //       
  84.                 if(ti<0)  ti=0;
  85.                 if(ti>100)  ti=100;
  86.                 if(ab<0)   ab=0;
  87.                 if(ab>0)   ab=100;
  88.                
  89.                         OLED_ShowString(0,0 ,"Direction:");
  90.                 OLED_ShowString(0,4 ,"Speed:");
  91.                 OLED_ShowNum(40,6,100-ti,3,24);
  92.                 OLED_ShowString(96,6 ,"%");
  93.                 //  OLED_ShowNum(0,2,ta,3,32);
  94.    switch (receive)
  95.                         {
  96.                                 case 'A':
  97.                                             ti+=5;
  98.                                       receive='p';
  99.                                          break;
  100.                            case 'B':
  101.                                             ti-=5;
  102.                                       receive='p';
  103.                                       break;
  104.                                 case 'C':
  105.                                             forward();
  106.                                       OLED_Clear();
  107.                                             OLED_ShowString(40,2 ,"Forward");
  108.                                       receive='p';
  109.                                       break;
  110.                                         case 'D':
  111.                                             back();
  112.                                       OLED_Clear();
  113.                                             OLED_ShowString(40,2 ,"Back");
  114.                                       receive='p';
  115.                                       break;
  116.                                         case 'E' :
  117.                                                   stop();
  118.                                             ti=0;;
  119.                                             OLED_Clear();
  120.                                             OLED_ShowString(40,2 ,"Stop");
  121.                                             receive='p';
  122.                                       break;
  123.                                   case 'F' :
  124.                                                   left();
  125.                                             OLED_Clear();
  126.                                             OLED_ShowString(40,2 ,"Turn_left");
  127.                                             receive='p';
  128.                                       break;
  129.                                         case 'G' :
  130.                                                   right();
  131.                                             OLED_Clear();
  132.                                             OLED_ShowString(40,2 ,"Turn_right");
  133.                                             receive='p';
  134.                                       break;
  135.                                                 case 'H' :
  136.                                                   up();
  137.                                                 ti=50;
  138.                                             OLED_Clear();
  139.                                             OLED_ShowString(40,2 ,"up");
  140.                                             receive='p';
  141.                                       break;
  142.                                                 case 'I' :
  143.                                                   down();
  144.                                                 ti=50;
  145.                                             OLED_Clear();
  146.                                             OLED_ShowString(40,2 ,"down");
  147.                                             receive='p';
  148.                                       break;
  149.                                                 case 'J' :
  150.                                                   ab-=5;
  151.                                             OLED_Clear();
  152.                                             receive='p';
  153.                                       break;
  154.                                                 case 'K' :
  155.                                                   ab+=5;
  156.                                             OLED_Clear();
  157.                                             receive='p';
  158.                                       break;
  159.                                        
  160.                         }
  161.         }



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.feixindz.com
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信