標(biāo)題:
pid無線+藍(lán)牙+飛控定高 電子設(shè)計(jì)大賽四旋翼程序
[打印本頁]
作者:
sunzham
時(shí)間:
2017-9-10 22:02
標(biāo)題:
pid無線+藍(lán)牙+飛控定高 電子設(shè)計(jì)大賽四旋翼程序
電子設(shè)計(jì)大賽四旋翼程序
所有資料51hei提供下載:
pid無線+藍(lán)牙+飛控定高.rar
(799.8 KB, 下載次數(shù): 156)
2017-9-11 00:18 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
主程序預(yù)覽:
/******************** (C) COPYRIGHT 2014 Air Nano Team ***************************
* 文件名 :main.c
* 描述 :系統(tǒng)初始化
* 實(shí)驗(yàn)平臺(tái):HT飛控
* 庫版本 :ST3.5.0
* 作者 :Air Nano Team
**********************************************************************************/
#include "include.h"
uint16 BATTVOL;
uint16 M1pmw,M2pmw,M3pmw,M4pmw;
extern u8 sentDateFlag;
extern struct _PID PID_US100;//超聲波的pid參數(shù)
u8 sumtxdbuf,TXDBUF,txdi;
u8 rx_buf[32];
u8 tx_buf[32]={0};
int main(void)
{
Gyro_OFFEST();
IAC_Init(); //接口以及外設(shè)的初始化
Sensor_Init(); //傳感器 初始化
paramLoad();//pid參數(shù)加載
State_Display();//OLED數(shù)據(jù)顯示
ALGH_set(); //設(shè)置油門形成
EnTIM3(); //開定時(shí)器
while(1)
{
if((sentDateFlag)&&(commad==0)) //10MS向上位機(jī)發(fā)送一次數(shù)據(jù)
{
sentDateFlag = 0;
if (sendms==0)
{
//UART3_ReportIMU(); //串口發(fā)送姿態(tài)
NRF_ReportIMU(); //用nrf無線
}
}
else if((commad)&&(sendms==0))//上位機(jī)有發(fā)數(shù)據(jù)下來處理
{
sentDateFlag = 0;
switch(commad){
case 1://讀PID
USART_TX_BUF[0]=0x8A; //
USART_TX_BUF[1]=0x60;//
USART_TX_BUF[2]=0x1C;
USART_TX_BUF[3]=0xA0;//數(shù)據(jù)頭
floatTURN2char1000x(ctrl.roll.shell.kp);
USART_TX_BUF[4]=0;
USART_TX_BUF[5]=0;
USART_TX_BUF[6]=floatTURN2char1000x_char[0];//rol_p
USART_TX_BUF[7]=floatTURN2char1000x_char[1];
floatTURN2char1000x(ctrl.roll.shell.ki);
USART_TX_BUF[8]=0;
USART_TX_BUF[9]=0;
USART_TX_BUF[10]=floatTURN2char1000x_char[0];//rol_i
USART_TX_BUF[11]=floatTURN2char1000x_char[1];
floatTURN2char1000x(ctrl.roll.shell.kd);
USART_TX_BUF[12]=0;
USART_TX_BUF[13]=0;
USART_TX_BUF[14]=floatTURN2char1000x_char[0];//rol_d
USART_TX_BUF[15]=floatTURN2char1000x_char[1];
floatTURN2char1000x(ctrl.pitch.shell.kp);
USART_TX_BUF[16]=0;
USART_TX_BUF[17]=0;
USART_TX_BUF[18]=floatTURN2char1000x_char[0];//pit_p
USART_TX_BUF[19]=floatTURN2char1000x_char[1];
floatTURN2char1000x(ctrl.pitch.shell.ki);
USART_TX_BUF[20]=0;
USART_TX_BUF[21]=0;
USART_TX_BUF[22]=floatTURN2char1000x_char[0];//pit_i
USART_TX_BUF[23]=floatTURN2char1000x_char[1];
floatTURN2char1000x(ctrl.pitch.shell.kd);
USART_TX_BUF[24]=0;
USART_TX_BUF[25]=0;
USART_TX_BUF[26]=floatTURN2char1000x_char[0];//pit_d
USART_TX_BUF[27]=floatTURN2char1000x_char[1];
floatTURN2char1000x(ctrl.yaw.shell.kp);
USART_TX_BUF[28]=0;
USART_TX_BUF[29]=0;
USART_TX_BUF[30]=floatTURN2char1000x_char[0];//yaw_p
USART_TX_BUF[31]=floatTURN2char1000x_char[1];
floatTURN2char1000x(ctrl.yaw.shell.kd);
USART_TX_BUF[32]=0;
USART_TX_BUF[33]=0;
USART_TX_BUF[34]=floatTURN2char1000x_char[0];//yaw_d
USART_TX_BUF[35]=floatTURN2char1000x_char[1];
floatTURN2char1000x(ctrl.roll.core.kp);
USART_TX_BUF[36]=0;
USART_TX_BUF[37]=0;
USART_TX_BUF[38]=floatTURN2char1000x_char[0];//rol_kp
USART_TX_BUF[39]=floatTURN2char1000x_char[1];
floatTURN2char1000x(ctrl.roll.core.kd);
USART_TX_BUF[40]=0;
USART_TX_BUF[41]=0;
USART_TX_BUF[42]=floatTURN2char1000x_char[0];//rol_kd
USART_TX_BUF[43]=floatTURN2char1000x_char[1];
floatTURN2char1000x(ctrl.pitch.core.kp);
USART_TX_BUF[44]=0;
USART_TX_BUF[45]=0;
USART_TX_BUF[46]=floatTURN2char1000x_char[0];//pit_kp
USART_TX_BUF[47]=floatTURN2char1000x_char[1];
floatTURN2char1000x(ctrl.pitch.core.kd);
USART_TX_BUF[48]=0;
USART_TX_BUF[49]=0;
USART_TX_BUF[50]=floatTURN2char1000x_char[0];//pit_kd
USART_TX_BUF[51]=floatTURN2char1000x_char[1];
// floatTURN2char1000x(ctrl.yaw.core.kp);
// USART_TX_BUF[52]=0;
// USART_TX_BUF[53]=0;
// USART_TX_BUF[54]=floatTURN2char1000x_char[0];//yaw_kp
// USART_TX_BUF[55]=floatTURN2char1000x_char[1];
//
// floatTURN2char1000x(ctrl.yaw.core.kd);
// USART_TX_BUF[56]=0;
// USART_TX_BUF[57]=0;
// USART_TX_BUF[58]=floatTURN2char1000x_char[0];//yaw_kd
// USART_TX_BUF[59]=floatTURN2char1000x_char[1];
floatTURN2char1000x(PID_US100.P);//改成超聲波的KP值修改
USART_TX_BUF[52]=0;
USART_TX_BUF[53]=0;
USART_TX_BUF[54]=floatTURN2char1000x_char[0];//yaw_kp
USART_TX_BUF[55]=floatTURN2char1000x_char[1];
floatTURN2char1000x(PID_US100.D);
USART_TX_BUF[56]=0;
USART_TX_BUF[57]=0;
USART_TX_BUF[58]=floatTURN2char1000x_char[0];//yaw_kd
USART_TX_BUF[59]=floatTURN2char1000x_char[1];
sumtxdbuf=0;
for(txdi=0;txdi<60;txdi++)sumtxdbuf+=USART_TX_BUF[txdi];//計(jì)算校驗(yàn)和與發(fā)送數(shù)據(jù)
USART_TX_BUF[60]=sumtxdbuf;
for(txdi=0;txdi<62;txdi++) UART_Put_Char(USART_TX_BUF[txdi]);//發(fā)送數(shù)據(jù)
commad=0;
sendms=5;//100ms再發(fā)數(shù)據(jù)
for(txdi=0;txdi<60;txdi++)USART_TX_BUF[txdi]=0;//清數(shù)據(jù)
break;
case 2://寫PID
break;
default://出錯(cuò)
commad=0;
break;
}
}
BATTDispaly(); //電壓顯示
}
}
/******************* (C) COPYRIGHT 2014 BEYOND *****END OF FILE************/
復(fù)制代碼
作者:
liupudong
時(shí)間:
2018-2-2 16:56
謝謝樓主
作者:
dukecheng
時(shí)間:
2018-5-23 16:18
謝謝,真的不錯(cuò)
作者:
15645068301
時(shí)間:
2018-7-4 17:46
不錯(cuò),挺好的,頂
作者:
bleach
時(shí)間:
2018-8-7 11:22
感謝樓主分享
作者:
xsj1877578806
時(shí)間:
2018-8-16 21:23
謝謝樓主分享
作者:
胡狼
時(shí)間:
2018-9-11 23:43
謝謝樓主分享
作者:
xunxing
時(shí)間:
2018-11-1 21:20
感覺很棒
作者:
阿康來學(xué)習(xí)
時(shí)間:
2018-11-2 09:29
收藏看看
作者:
onroll
時(shí)間:
2018-11-2 17:13
謝謝分享
作者:
伯爵默默
時(shí)間:
2018-11-8 10:19
還不錯(cuò)哦!
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1