标题:
pid无线+蓝牙+飞控定高 电子设计大赛四旋翼程序
[打印本页]
作者:
sunzham
时间:
2017-9-10 22:02
标题:
pid无线+蓝牙+飞控定高 电子设计大赛四旋翼程序
电子设计大赛四旋翼程序
所有资料51hei提供下载:
pid无线+蓝牙+飞控定高.rar
(799.8 KB, 下载次数: 154)
2017-9-11 00:18 上传
点击文件名下载附件
下载积分: 黑币 -5
主程序预览:
/******************** (C) COPYRIGHT 2014 Air Nano Team ***************************
* 文件名 :main.c
* 描述 :系统初始化
* 实验平台: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参数
u8 sumtxdbuf,TXDBUF,txdi;
u8 rx_buf[32];
u8 tx_buf[32]={0};
int main(void)
{
Gyro_OFFEST();
IAC_Init(); //接口以及外设的初始化
Sensor_Init(); //传感器 初始化
paramLoad();//pid参数加载
State_Display();//OLED数据显示
ALGH_set(); //设置油门形成
EnTIM3(); //开定时器
while(1)
{
if((sentDateFlag)&&(commad==0)) //10MS向上位机发送一次数据
{
sentDateFlag = 0;
if (sendms==0)
{
//UART3_ReportIMU(); //串口发送姿态
NRF_ReportIMU(); //用nrf无线
}
}
else if((commad)&&(sendms==0))//上位机有发数据下来处理
{
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;//数据头
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];//计算校验和与发送数据
USART_TX_BUF[60]=sumtxdbuf;
for(txdi=0;txdi<62;txdi++) UART_Put_Char(USART_TX_BUF[txdi]);//发送数据
commad=0;
sendms=5;//100ms再发数据
for(txdi=0;txdi<60;txdi++)USART_TX_BUF[txdi]=0;//清数据
break;
case 2://写PID
break;
default://出错
commad=0;
break;
}
}
BATTDispaly(); //电压显示
}
}
/******************* (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