找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 6606|回復(fù): 10
打印 上一主題 下一主題
收起左側(cè)

pid無線+藍(lán)牙+飛控定高 電子設(shè)計(jì)大賽四旋翼程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:232286 發(fā)表于 2017-9-10 22:02 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
電子設(shè)計(jì)大賽四旋翼程序

所有資料51hei提供下載:
pid無線+藍(lán)牙+飛控定高.rar (799.8 KB, 下載次數(shù): 156)


主程序預(yù)覽:
  1. /******************** (C) COPYRIGHT 2014 Air Nano Team ***************************
  2. * 文件名  :main.c
  3. * 描述    :系統(tǒng)初始化         
  4. * 實(shí)驗(yàn)平臺(tái):HT飛控
  5. * 庫版本  :ST3.5.0
  6. * 作者    :Air Nano Team
  7. **********************************************************************************/
  8. #include "include.h"
  9. uint16  BATTVOL;
  10. uint16 M1pmw,M2pmw,M3pmw,M4pmw;
  11. extern u8  sentDateFlag;
  12. extern struct _PID PID_US100;//超聲波的pid參數(shù)
  13. u8 sumtxdbuf,TXDBUF,txdi;
  14. u8 rx_buf[32];        
  15. u8 tx_buf[32]={0};        
  16. int main(void)
  17. {     
  18.      Gyro_OFFEST();  
  19.            IAC_Init();     //接口以及外設(shè)的初始化
  20.           Sensor_Init();  //傳感器 初始化      
  21.           paramLoad();//pid參數(shù)加載
  22.           State_Display();//OLED數(shù)據(jù)顯示
  23.           ALGH_set();   //設(shè)置油門形成
  24.           EnTIM3();       //開定時(shí)器                                 
  25.         
  26.     while(1)
  27.           {   

  28.                         if((sentDateFlag)&&(commad==0))  //10MS向上位機(jī)發(fā)送一次數(shù)據(jù)
  29.                         {
  30.                         sentDateFlag = 0;
  31.                         if (sendms==0)
  32.                         {
  33.     //UART3_ReportIMU();  //串口發(fā)送姿態(tài)
  34.             NRF_ReportIMU();        //用nrf無線
  35.                         }
  36.                         }
  37.                         else if((commad)&&(sendms==0))//上位機(jī)有發(fā)數(shù)據(jù)下來處理
  38.                         {
  39.                                 
  40.                                 sentDateFlag = 0;
  41.                                 switch(commad){
  42.                                 case 1://讀PID
  43.                                       USART_TX_BUF[0]=0x8A;        //
  44.                                                         USART_TX_BUF[1]=0x60;//
  45.                                                         USART_TX_BUF[2]=0x1C;
  46.                                                         USART_TX_BUF[3]=0xA0;//數(shù)據(jù)頭
  47.                                       floatTURN2char1000x(ctrl.roll.shell.kp);
  48.                                       USART_TX_BUF[4]=0;
  49.                                                         USART_TX_BUF[5]=0;
  50.                                                         USART_TX_BUF[6]=floatTURN2char1000x_char[0];//rol_p
  51.                                                         USART_TX_BUF[7]=floatTURN2char1000x_char[1];
  52.                                                         floatTURN2char1000x(ctrl.roll.shell.ki);
  53.                                       USART_TX_BUF[8]=0;
  54.                                                         USART_TX_BUF[9]=0;
  55.                                                         USART_TX_BUF[10]=floatTURN2char1000x_char[0];//rol_i
  56.                                                         USART_TX_BUF[11]=floatTURN2char1000x_char[1];
  57.                                                         floatTURN2char1000x(ctrl.roll.shell.kd);
  58.                                                         USART_TX_BUF[12]=0;
  59.                                                         USART_TX_BUF[13]=0;
  60.                                                         USART_TX_BUF[14]=floatTURN2char1000x_char[0];//rol_d
  61.                                                         USART_TX_BUF[15]=floatTURN2char1000x_char[1];
  62.                                                         floatTURN2char1000x(ctrl.pitch.shell.kp);
  63.                                                         USART_TX_BUF[16]=0;
  64.                                                         USART_TX_BUF[17]=0;
  65.                                                         USART_TX_BUF[18]=floatTURN2char1000x_char[0];//pit_p
  66.                                                         USART_TX_BUF[19]=floatTURN2char1000x_char[1];
  67.                                                         floatTURN2char1000x(ctrl.pitch.shell.ki);
  68.                                                         USART_TX_BUF[20]=0;
  69.                                                         USART_TX_BUF[21]=0;
  70.                                                         USART_TX_BUF[22]=floatTURN2char1000x_char[0];//pit_i
  71.                                                         USART_TX_BUF[23]=floatTURN2char1000x_char[1];
  72.                                                         floatTURN2char1000x(ctrl.pitch.shell.kd);
  73.                                                         USART_TX_BUF[24]=0;
  74.                                                         USART_TX_BUF[25]=0;
  75.                                                         USART_TX_BUF[26]=floatTURN2char1000x_char[0];//pit_d
  76.                                                         USART_TX_BUF[27]=floatTURN2char1000x_char[1];

  77.                                                         floatTURN2char1000x(ctrl.yaw.shell.kp);
  78.                                                         USART_TX_BUF[28]=0;
  79.                                                         USART_TX_BUF[29]=0;
  80.                                                         USART_TX_BUF[30]=floatTURN2char1000x_char[0];//yaw_p
  81.                                                         USART_TX_BUF[31]=floatTURN2char1000x_char[1];
  82.                                                         
  83.                                                         floatTURN2char1000x(ctrl.yaw.shell.kd);
  84.                                                         USART_TX_BUF[32]=0;
  85.                                                         USART_TX_BUF[33]=0;
  86.                                                         USART_TX_BUF[34]=floatTURN2char1000x_char[0];//yaw_d
  87.                                                         USART_TX_BUF[35]=floatTURN2char1000x_char[1];
  88.                         

  89.                                                         floatTURN2char1000x(ctrl.roll.core.kp);
  90.                                                         USART_TX_BUF[36]=0;
  91.                                                         USART_TX_BUF[37]=0;
  92.                                                         USART_TX_BUF[38]=floatTURN2char1000x_char[0];//rol_kp
  93.                                                         USART_TX_BUF[39]=floatTURN2char1000x_char[1];
  94.                                                         

  95.                                                         floatTURN2char1000x(ctrl.roll.core.kd);
  96.                                                         USART_TX_BUF[40]=0;
  97.                                                         USART_TX_BUF[41]=0;
  98.                                                         USART_TX_BUF[42]=floatTURN2char1000x_char[0];//rol_kd
  99.                                                         USART_TX_BUF[43]=floatTURN2char1000x_char[1];
  100.                                                         
  101.                
  102.                                                         floatTURN2char1000x(ctrl.pitch.core.kp);
  103.                                                         USART_TX_BUF[44]=0;
  104.                                                         USART_TX_BUF[45]=0;
  105.                                                         USART_TX_BUF[46]=floatTURN2char1000x_char[0];//pit_kp
  106.                                                         USART_TX_BUF[47]=floatTURN2char1000x_char[1];
  107.                                                         
  108.                                                         floatTURN2char1000x(ctrl.pitch.core.kd);
  109.                                                         USART_TX_BUF[48]=0;
  110.                                                         USART_TX_BUF[49]=0;
  111.                                                         USART_TX_BUF[50]=floatTURN2char1000x_char[0];//pit_kd
  112.                                                         USART_TX_BUF[51]=floatTURN2char1000x_char[1];
  113.                

  114. //                                                        floatTURN2char1000x(ctrl.yaw.core.kp);
  115. //                                                        USART_TX_BUF[52]=0;
  116. //                                                        USART_TX_BUF[53]=0;
  117. //                                                        USART_TX_BUF[54]=floatTURN2char1000x_char[0];//yaw_kp
  118. //                                                        USART_TX_BUF[55]=floatTURN2char1000x_char[1];
  119. //                                                        
  120. //                                                        floatTURN2char1000x(ctrl.yaw.core.kd);
  121. //                                                        USART_TX_BUF[56]=0;
  122. //                                                        USART_TX_BUF[57]=0;
  123. //                                                        USART_TX_BUF[58]=floatTURN2char1000x_char[0];//yaw_kd
  124. //                                                        USART_TX_BUF[59]=floatTURN2char1000x_char[1];

  125.                          floatTURN2char1000x(PID_US100.P);//改成超聲波的KP值修改
  126.                                                         USART_TX_BUF[52]=0;
  127.                                                         USART_TX_BUF[53]=0;
  128.                                                         USART_TX_BUF[54]=floatTURN2char1000x_char[0];//yaw_kp
  129.                                                         USART_TX_BUF[55]=floatTURN2char1000x_char[1];
  130.                                                         
  131.                                                         floatTURN2char1000x(PID_US100.D);
  132.                                                         USART_TX_BUF[56]=0;
  133.                                                         USART_TX_BUF[57]=0;
  134.                                                         USART_TX_BUF[58]=floatTURN2char1000x_char[0];//yaw_kd
  135.                                                         USART_TX_BUF[59]=floatTURN2char1000x_char[1];
  136.                                                         
  137.                                                         sumtxdbuf=0;
  138.                                       for(txdi=0;txdi<60;txdi++)sumtxdbuf+=USART_TX_BUF[txdi];//計(jì)算校驗(yàn)和與發(fā)送數(shù)據(jù)
  139.                                                         USART_TX_BUF[60]=sumtxdbuf;
  140.                                                         for(txdi=0;txdi<62;txdi++) UART_Put_Char(USART_TX_BUF[txdi]);//發(fā)送數(shù)據(jù)        
  141.                                                         commad=0;
  142.                                                         sendms=5;//100ms再發(fā)數(shù)據(jù)
  143.                                                         for(txdi=0;txdi<60;txdi++)USART_TX_BUF[txdi]=0;//清數(shù)據(jù)
  144.                                         break;
  145.                                 case 2://寫PID
  146.                                        
  147.                                         break;
  148.                                 default://出錯(cuò)
  149.                                         commad=0;
  150.                                         break;
  151.                                 }
  152.                         }
  153.                         BATTDispaly(); //電壓顯示
  154.           }
  155. }
  156. /******************* (C) COPYRIGHT 2014 BEYOND *****END OF FILE************/

復(fù)制代碼


評(píng)分

參與人數(shù) 1黑幣 +1 收起 理由
當(dāng)〆下 + 1 很給力!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:267230 發(fā)表于 2018-2-2 16:56 | 只看該作者
謝謝樓主
回復(fù)

使用道具 舉報(bào)

板凳
ID:294865 發(fā)表于 2018-5-23 16:18 | 只看該作者
謝謝,真的不錯(cuò)
回復(fù)

使用道具 舉報(bào)

地板
ID:364390 發(fā)表于 2018-7-4 17:46 | 只看該作者
不錯(cuò),挺好的,頂
回復(fù)

使用道具 舉報(bào)

5#
ID:146874 發(fā)表于 2018-8-7 11:22 | 只看該作者
感謝樓主分享
回復(fù)

使用道具 舉報(bào)

6#
ID:380389 發(fā)表于 2018-8-16 21:23 來自手機(jī) | 只看該作者
謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

7#
ID:396751 發(fā)表于 2018-9-11 23:43 | 只看該作者
謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

8#
ID:418772 發(fā)表于 2018-11-1 21:20 | 只看該作者
感覺很棒
回復(fù)

使用道具 舉報(bào)

9#
ID:414454 發(fā)表于 2018-11-2 09:29 | 只看該作者
收藏看看
回復(fù)

使用道具 舉報(bào)

10#
ID:418342 發(fā)表于 2018-11-2 17:13 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

11#
ID:421585 發(fā)表于 2018-11-8 10:19 | 只看該作者
還不錯(cuò)哦!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表