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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6052|回復: 2
收起左側

風力擺的程序設計+匿名四軸上位機(15年國賽)對練習PID算法很有幫助

[復制鏈接]
ID:227103 發表于 2017-8-11 22:20 | 顯示全部樓層 |閱讀模式
PID算法的極好學習資料,匿名四軸資料
0.png 0.png 0.png

stm32單片機風力擺源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "key.h"  
  6. #include "mpu6050.h"
  7. #include "pwmset.h"
  8. #include "niming.h"
  9. #include "pid.h"
  10. #include "usmart.h"   
  11. #include "inv_mpu.h"
  12. #include "inv_mpu_dmp_motion_driver.h"

  13. volatile float pitch,roll,yaw;                 //歐拉角
  14. volatile u8 mode = 1;                                                        //當前工作方式
  15. volatile float step = 0;

  16. int main(void)
  17. {               
  18.          Stm32_Clock_Init(9);                //系統時鐘設置
  19.         uart_init(72,500000);                //串口初始化為500000
  20.         delay_init(72);                                    //延時初始化
  21.         usmart_dev.init(72);                //初始化USMART
  22.         LED_Init();                                                  //初始化與LED連接的硬件接口
  23.         KEY_Init();                                                        //初始化按鍵
  24.         MPU_Init();                                                        //初始化MPU6050
  25.         TIM3_PWM_Init(999,8);          //初始化脈寬波輸出        
  26.         TIM2_Int_Init(4999,71);        //初始化定時器2,每5ms產生一次中斷


  27.         while(mpu_dmp_init())
  28.         {
  29.                 delay_ms(20);        
  30.         }               

  31.          while(1)
  32.         {               
  33.                 key=KEY_Scan(0);
  34.                 if(key==KEY2_PRES)                                                //測試發送pid數據給上位機
  35.                 {
  36.                         pid_send_data(rol_p,rol_i,rol_d,pit_p,pit_i,pit_d);
  37.                 }
  38.                
  39.                 if(key==KEY0_PRES)                                                //開啟或關閉下位機數據發送開關
  40.                 {
  41.                         report=!report;
  42.                 }        

  43.                 if(key==KEY1_PRES)                                                //開啟或關閉下位機數據發送開關
  44.                 {
  45.                         Rol_SumError = 0;
  46.                 }               

  47.                 if(key == KEY8_PRES)                                        //PE8按下
  48.                 {
  49.                         rol_p += 1;
  50.                         LED0 = ~LED0;
  51.                 }
  52.                 if(key == KEY9_PRES)
  53.                 {
  54.                         rol_i += 0.1;
  55.                         LED0 = ~LED0;
  56.                 }
  57.                 if(key == KEY10_PRES)
  58.                 {
  59.                         R += 0.05;
  60.                         LED0 = ~LED0;
  61.                 }
  62.                 if(key == KEY11_PRES)                                        //模式切換
  63.                 {
  64.                         mode++;
  65.                         LED0 = ~LED0;
  66.                 }

  67.                 if(key == KEY12_PRES)
  68.                 {
  69.                         rol_p -= 1;
  70.                         LED0 = ~LED0;
  71.                 }
  72.                 if(key == KEY13_PRES)
  73.                 {
  74.                         rol_i -= 0.1;
  75.                         LED0 = ~LED0;
  76.                 }
  77.                 if(key == KEY14_PRES)
  78.                 {
  79.                         R -= 0.05;
  80.                         LED0 = ~LED0;
  81.                 }
  82.                 if(key == KEY15_PRES)
  83.                 {
  84.                         mode--;                                                                                        //模式切換
  85.                         LED0 = ~LED0;
  86.                 }
  87.                
  88.                 if(USART_RX_STA == 1)                                        //檢測是否接收到了數據。
  89.                 {
  90.                         USART_RX_STA = 0;                                                //清除接收標志,防止多次判斷。
  91.                         LED1 = ~LED1;
  92.                         rol_p = (USART_RX_BUF[4]<<8)|USART_RX_BUF[5];
  93.                         rol_i = (USART_RX_BUF[6]<<8)|USART_RX_BUF[7];
  94.                         rol_d = (USART_RX_BUF[8]<<8)|USART_RX_BUF[9];
  95.                         pit_p = (USART_RX_BUF[10]<<8)|USART_RX_BUF[11];
  96.                         pit_i = (USART_RX_BUF[12]<<8)|USART_RX_BUF[13];
  97.                         pit_d = (USART_RX_BUF[14]<<8)|USART_RX_BUF[15];                                       
  98.                 }        
  99.                         
  100.         }         
  101. }

復制代碼

所有資料51hei提供下載:
15電賽風力擺源碼及上位機.rar (3.81 MB, 下載次數: 144)
回復

使用道具 舉報

ID:594095 發表于 2019-8-2 13:48 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:594095 發表于 2019-8-2 13:49 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日产久久| 精品国产青草久久久久96 | 综合激情网 | 亚洲视频免费观看 | 中文字幕精品一区二区三区精品 | 国产精品美女在线观看 | 国产丝袜一区二区三区免费视频 | 综合精品久久久 | 三极网站 | 日韩精品一区二区三区在线观看 | 国产一区二区三区 | 亚洲国产一区二区视频 | 欧美日产国产成人免费图片 | 麻豆久久久9性大片 | 精品九九久久 | 亚洲精品自在在线观看 | 91免费视频观看 | 精品免费视频 | 亚洲国产中文字幕 | 久久精品毛片 | 国产成人一区二区三区电影 | 欧美一区二区三区在线看 | 国产精品成人在线 | 日本一区二区三区四区 | 亚洲一区二区在线播放 | 一级毛片在线播放 | 狠狠久久| 欧美一区二区三区在线观看视频 | 九九热这里 | 国产网站在线播放 | 91精品国产91久久综合桃花 | 国产美女永久免费无遮挡 | 99小视频 | 福利社午夜影院 | 午夜在线影院 | 在线只有精品 | 精品日韩电影 | a毛片视频网站 | 成人久久久久 | 鲁一鲁资源影视 | 午夜影院视频 |