久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1253|回復: 1
打印 上一主題 下一主題
收起左側

基于stm32的萬向車源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:410061 發表于 2019-8-2 10:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include "stm32f10x.h"   // 相當于51單片機中的  #include <reg51.h>
  2. #include "bsp_moto.h"
  3. #include "./key/bsp_key.h"  
  4. #include "bsp_SysTick.h"
  5. #include "exti.h"
  6. #include "filter.h"
  7. #include "MPU6050.h"
  8. #include "IOI2C.h"
  9. #include "bsp_usart.h"
  10. #include "delay.h"
  11. #include "bsp_servo.h"
  12. #include "bsp_dma.h"
  13. long int Target_A,Target_B,Target_C;     //電機目標值
  14. long int Motor_A,Motor_B,Motor_C;        //電機PWM變量
  15. int  Vx,Vy,Vz;     //車子三輪的速度
  16. float GYROA=0.004;
  17. float Pitch,Roll,Yaw,Move_X,Move_Y,Move_Z;   //三軸角度和XYZ軸目標速度  3200

  18. int time;  //小車轉度數計時變量

  19. int control_flag=0;    //小車的行駛4個狀態的控制量
  20. int mode_flag=1;         // 小車模式的控制量,1為自動,0為手動
  21. char position ='0';         //小車當前的狀態。
  22.                             //小車忙不忙,如果小車在運動,上位機第四部分禁止發數據,只有小車空閑時,上位機第四部分才能給我發數據,
  23.                                                                                         //  用字符‘1’代表忙,字符‘0’代表空閑.


  24. char commend[11]={'\0'};  //接受手動命令的數組

  25. /*手動控制關閉,前進,后退,順時針轉90度,逆時針轉90度,順時針轉,逆時針轉*/
  26. int  off=0,forward=0,backward=0,clockwise_90=0,anticlockwise_90=0,clockwise=0,anticlockwise=0;

  27. char send_data[63]={'\0'};   //發送數據的數組
  28. double frequency_B,count_B,sum_B=0;
  29. //char wifi_flag=0;

  30. void  Start_to_A(void);
  31. void A_to_Start(void);
  32. void Start_A_B(void);
  33. void Start_A_B_C(void);


  34. int main(void)
  35. {
  36.         led_GPIO_Config();  //自動模式時,燈會亮;手動模式時,燈熄滅
  37.         led(0);
  38.         Key_GPIO_Config();
  39.         while(!Key_Scan());
  40.   wifi_Config();           //wifi初始化,配置中斷優先級為0   
  41. //        USART1_Config();
  42.         Servo_Init();//舵機初始化
  43.        
  44.   Servo_heng();  //不管舵機現在是什么狀態,一律變為水平狀態
  45.        
  46.         moto_init();  //電機初始化,剛初始化電機完,電機不能轉動,失能電機
  47.        
  48.   IIC_Init();     //=====IIC初始化,為MPU6050傳輸數據做準備

  49.   MPU6050_initialize();    //=====MPU6050初始化       

  50.   DMP_Init();                //=====初始化DMP  
  51.        
  52.         delay_ms(1000);           //=====延時等待DMP初始化穩定
  53. /************一上電為了后面數據的準確性,需要給出Z軸角速度的準確值,大概需要7-8秒*******/       
  54.         Read_DMP();               
  55.         delay_ms(5);
  56.         Read_DMP();               
  57.         delay_ms(5);
  58.         while(gyro[2]!=0)
  59.         {       
  60.                 Read_DMP();               
  61.                 delay_ms(5);
  62.         }
  63. /**************************************************************************************/       

  64.   GENERAL_TIM7_Init(); //以100ms的速度給上位機發送小車的運動參數,配置中斷優先級為10   
  65.        
  66.         GENERAL_TIM4_Init();  //以5ms一次中斷控制小車運動 ,初始化時不開啟,配置中斷優先級為15
  67.                               // 使能計數器TIM_Cmd(GENERAL_TIM4, ENABLE);
  68.    
  69.         GENERAL_TIM6_Init();//,配置中斷優先級為5
  70.        
  71.         led(1);
  72.                

  73.        
  74.   //printf("init ok!!!\n");       
  75.         //wifi_flag=1;
  76.         wifi_NVIC_Configuration();     // wifi4中斷優先級配置
  77.         USART_ITConfig(DEBUG_USART4, USART_IT_RXNE, ENABLE);        // wifi串口接收中斷使能
  78.         while(1)
  79.         {
  80.                  switch(control_flag)
  81.                  {
  82.                          case 1 : Start_to_A();   break;
  83.                          case 2 : A_to_Start();   break;
  84.                          case 3 : Start_A_B();    break;
  85.                          case 4 : Start_A_B_C();  break;
  86.                          case 5 :        turn_angle(1);control_flag=0; break;//順時針90度
  87.                          case 6 :        turn_angle(0);control_flag=0;        break;                 
  88.                          default:   ;             break;
  89.                  }
  90.         }
  91. }

  92. void  Start_to_A(void)
  93. {
  94.                
  95.                 delay_ms(1);
  96.                 position='1';  //小車忙
  97.                
  98.                 Servo_shu();  //頂貨物 ,有延時
  99.           motoEN(1);//使能電機
  100.                 car_speed(0,600,0);  //小車速度
  101.                 TIM_Cmd(GENERAL_TIM4, ENABLE);  //使能計數器,讓小車開始運動
  102.                 while(control_flag);  // 等待小車跑完
  103.                 delay_ms(500);
  104.                 Servo_heng();  //放貨物   
  105.                 car_speed(0,-600,0);  //小車速度
  106.                 control_flag=1;
  107.                 TIM_Cmd(GENERAL_TIM4, ENABLE);  //使能計數器,讓小車開始運動
  108.                 while(control_flag);  // 等待小車跑完
  109.                 motoEN(0);
  110.                 control_flag=0;
  111.                 position='0';//小車不忙
  112. }

  113. void A_to_Start(void)
  114. {
  115.                 motoEN(1);//使能電機
  116.                 delay_ms(1);
  117.                 position='1';  //小車忙
  118.          
  119.                 car_speed(0,600,0);  //小車速度
  120.                 TIM_Cmd(GENERAL_TIM4, ENABLE);  //使能計數器,讓小車開始運動
  121.                 while(control_flag);  // 等待小車跑完
  122.                 delay_ms(500);
  123.                 Servo_shu();  
  124.                 car_speed(0,-600,0);  //小車速度
  125.                 control_flag=2;
  126.                 TIM_Cmd(GENERAL_TIM4, ENABLE);  //使能計數器,讓小車開始運動
  127.                 while(control_flag);  // 等待小車跑完
  128.                 Servo_heng();
  129.                 motoEN(0);
  130.                 control_flag=0;
  131.                 position='0';//小車不忙
  132. }

  133. void Start_A_B(void)
  134. {
  135.                 motoEN(1);//使能電機
  136.                 delay_ms(1);
  137.                 position='1';  //小車忙
  138.          
  139.                 car_speed(0,600,0);  //小車速度
  140.                 TIM_Cmd(GENERAL_TIM4, ENABLE);  //使能計數器,讓小車開始運動
  141.                 while(control_flag);  // 等待小車跑完
  142.                 delay_ms(500);
  143.           Servo_shu();
  144.                 turn_angle(1);//順時針90度
  145.                 delay_ms(500);
  146.           control_flag=3;
  147.                 TIM_Cmd(GENERAL_TIM4, ENABLE);  //使能計數器,讓小車開始運動
  148.                 while(control_flag);  // 等待小車跑完
  149.                 delay_ms(500);
  150.           Servo_heng();
  151.                
  152.                 car_speed(0,-600,0);  //小車速度
  153.                 control_flag=3;
  154.                 TIM_Cmd(GENERAL_TIM4, ENABLE);  //使能計數器,讓小車開始運動
  155.                 while(control_flag);  // 等待小車跑完
  156.                 delay_ms(500);
  157.                 turn_angle(0);//逆時針90度       
  158.                 delay_ms(500);
  159.                 control_flag=3;
  160.                 TIM_Cmd(GENERAL_TIM4, ENABLE);  //使能計數器,讓小車開始運動       
  161.                 while(control_flag);  // 等待小車跑完
  162.                 motoEN(0);
  163.                 control_flag=0;
  164.                 position='0';//小車不忙
  165. }

  166. void Start_A_B_C(void)
  167. {
  168.                 motoEN(1);//使能電機
  169.                 delay_ms(1);
  170.                 position='1';  //小車忙
  171.        
  172.                 car_speed(0,600,0);  //小車速度
  173.                 TIM_Cmd(GENERAL_TIM4, ENABLE);  //使能計數器,讓小車開始運動
  174.                 while(control_flag);  // 等待小車跑完
  175.                 delay_ms(500);
  176.                 turn_angle(1);//順時針90度               
  177.                 delay_ms(500);
  178.                 control_flag=4;
  179.                 TIM_Cmd(GENERAL_TIM4, ENABLE);  //使能計數器,讓小車開始運動
  180.                 while(control_flag);  // 等待小車跑完
  181.                 delay_ms(500);
  182.                 Servo_shu();
  183.                 turn_angle(1);//順時針90度
  184.                 delay_ms(500);
  185.                 control_flag=4;
  186.                 TIM_Cmd(GENERAL_TIM4, ENABLE);
  187.                 while(control_flag);  // 等待小車跑完
  188.                 delay_ms(500);
  189.                 turn_angle(1);//順時針90度
  190.                 delay_ms(500);
  191.                 control_flag=4;
  192.                 TIM_Cmd(GENERAL_TIM4, ENABLE);
  193.                 while(control_flag);  // 等待小車跑完       
  194.                 delay_ms(500);
  195.                 turn_angle(1);//順時針90度       
  196.           Servo_heng();
  197.                 motoEN(0);
  198.                 control_flag=0;
  199.                 position='0';//小車不忙
  200. }
復制代碼

全部程序51hei下載地址:
萬向車.7z (252.23 KB, 下載次數: 5)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2019-8-2 17:01 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级特黄在线 | 好姑娘影视在线观看高清 | 国产成人黄色 | 亚洲高清av在线 | 一区二区三区久久 | 欧美在线视频不卡 | 国产福利视频导航 | 久久国际精品 | 久久一 | 欧美乱淫视频 | 国产在线一区二 | h片在线观看网站 | 国产成人免费一区二区60岁 | av国产精品 | 日本黄视频在线观看 | 青青久在线视频 | 国产精品久久久久久久久久免费看 | 亚洲精品久久久久久首妖 | 成人深夜小视频 | 国产做a爱片久久毛片 | 色综合一区二区三区 | 久久天堂网 | 另类二区| 黄色大片免费看 | 在线免费观看视频你懂的 | 一区二区中文 | 成人国产精品免费观看 | 国产精品国产三级国产播12软件 | 亚洲性免费| 在线观看你懂的网站 | 人人干人人草 | 天天看天天爽 | 91中文字幕在线观看 | 午夜私人影院在线观看 | 久久久久久国产精品免费免费男同 | 久久久久久国产精品免费免费狐狸 | 久久亚洲国产 | 综合久久99 | 成人欧美一区二区三区在线播放 | 亚洲欧美高清 | 国产日产精品一区二区三区四区 |