标题: pid无线+蓝牙+飞控定高 电子设计大赛四旋翼程序 [打印本页]

作者: sunzham    时间: 2017-9-10 22:02
标题: pid无线+蓝牙+飞控定高 电子设计大赛四旋翼程序
电子设计大赛四旋翼程序

所有资料51hei提供下载:
pid无线+蓝牙+飞控定高.rar (799.8 KB, 下载次数: 154)


主程序预览:
  1. /******************** (C) COPYRIGHT 2014 Air Nano Team ***************************
  2. * 文件名  :main.c
  3. * 描述    :系统初始化         
  4. * 实验平台: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参数
  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();     //接口以及外设的初始化
  20.           Sensor_Init();  //传感器 初始化      
  21.           paramLoad();//pid参数加载
  22.           State_Display();//OLED数据显示
  23.           ALGH_set();   //设置油门形成
  24.           EnTIM3();       //开定时器                                 
  25.         
  26.     while(1)
  27.           {   

  28.                         if((sentDateFlag)&&(commad==0))  //10MS向上位机发送一次数据
  29.                         {
  30.                         sentDateFlag = 0;
  31.                         if (sendms==0)
  32.                         {
  33.     //UART3_ReportIMU();  //串口发送姿态
  34.             NRF_ReportIMU();        //用nrf无线
  35.                         }
  36.                         }
  37.                         else if((commad)&&(sendms==0))//上位机有发数据下来处理
  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;//数据头
  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];//计算校验和与发送数据
  139.                                                         USART_TX_BUF[60]=sumtxdbuf;
  140.                                                         for(txdi=0;txdi<62;txdi++) UART_Put_Char(USART_TX_BUF[txdi]);//发送数据        
  141.                                                         commad=0;
  142.                                                         sendms=5;//100ms再发数据
  143.                                                         for(txdi=0;txdi<60;txdi++)USART_TX_BUF[txdi]=0;//清数据
  144.                                         break;
  145.                                 case 2://写PID
  146.                                        
  147.                                         break;
  148.                                 default://出错
  149.                                         commad=0;
  150.                                         break;
  151.                                 }
  152.                         }
  153.                         BATTDispaly(); //电压显示
  154.           }
  155. }
  156. /******************* (C) COPYRIGHT 2014 BEYOND *****END OF FILE************/

复制代码



作者: liupudong    时间: 2018-2-2 16:56
谢谢楼主
作者: dukecheng    时间: 2018-5-23 16:18
谢谢,真的不错
作者: 15645068301    时间: 2018-7-4 17:46
不错,挺好的,顶

作者: bleach    时间: 2018-8-7 11:22
感谢楼主分享
作者: xsj1877578806    时间: 2018-8-16 21:23
谢谢楼主分享
作者: 胡狼    时间: 2018-9-11 23:43
谢谢楼主分享
作者: xunxing    时间: 2018-11-1 21:20
感觉很棒

作者: 阿康来学习    时间: 2018-11-2 09:29
收藏看看
作者: onroll    时间: 2018-11-2 17:13
谢谢分享
作者: 伯爵默默    时间: 2018-11-8 10:19
还不错哦!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1