资源简介

调平衡车的时候用的软件,最新版本界面友好,稳定了很多,在win10上运行没有bug。自己写了一个教程,希望大家喜欢!

资源截图

代码片段和文件信息

#include “ANO_DT.h“
#include “mpu6050.h“
#include “flight_control.h“
#include “24l01.h“
#include “HCSR04.h“
#include “usart.h“
#include “stm32f10x_usart.h“
#include “kalman.h“
#include “stmflash.h“
#include “adc.h“
#include “debug_para.h“
/////////////////////////////////////////////////////////////////////////////////////
//数据拆分宏定义,在发送大于1字节的数据类型时,比如int16、float等,需要把数据拆分成单独字节进行发送
#define BYTE0(dwTemp)       ( *( (char *)(&dwTemp)    ) )
#define BYTE1(dwTemp)       ( *( (char *)(&dwTemp) + 1) )
#define BYTE2(dwTemp)       ( *( (char *)(&dwTemp) + 2) )
#define BYTE3(dwTemp)       ( *( (char *)(&dwTemp) + 3) )


dt_flag_t f;            //需要发送数据的标志
u8 data_to_send[50];    //发送数据缓存
extern float motor_duty[4];
extern struct PID_parameter PID_pitch ;  //姿态角PID
extern struct PID_parameter PID_roll;
extern struct PID_parameter PID_yaw;

extern struct PID_parameter PID_gyro_x;  //角速度PID
extern struct PID_parameter PID_gyro_y;
extern struct PID_parameter PID_gyro_z;

extern float accel[3];

extern struct PID_parameter PID_height;  //高度PID

extern struct Kalman_data kalman_accel_x ;     //三轴的加速度卡尔曼滤波数据(从左到右为last_p Q R output)
extern struct Kalman_data kalman_accel_y ;
extern struct Kalman_data kalman_accel_z ;

extern struct Attitude_int offset;     //四旋翼静态的时候6050测得的数据
extern struct Attitude_float attitude;   //四旋翼当前的姿态数据

extern float Power_V;

extern struct debug_data debug;

/////////////////////////////////////////////////////////////////////////////////////
//Data_Exchange函数处理各种数据发送请求,比如想实现每5ms发送一次传感器数据至上位机,即在此函数内实现
//此函数应由用户每1ms调用一次
void ANO_DT_Data_Exchange(void)
{
    static u8 cnt = 0;
    static u8 senser_cnt    = 10;
    static u8 status_cnt    = 15;
    static u8 motopwm_cnt   = 20;
static u8 udata_cnt = 25;
    static u8 power_cnt     = 50; //计量值用来确定数据传输频率
    
    if((cnt % senser_cnt) == (senser_cnt-1))
        f.send_senser = 1;  

    if((cnt % status_cnt) == (status_cnt-1))
        f.send_status = 1;  
    
    if((cnt % motopwm_cnt) == (motopwm_cnt-1))
        f.send_motopwm = 1; 
    
if((cnt % udata_cnt) == (udata_cnt-1))
f.udata =1;
    if((cnt % power_cnt) == (power_cnt-1))
        f.send_power = 1; //到达计数值,标志位置一
    
    cnt++;

/////////////////////////////////////////////////////////////////////////////////////
    if(f.send_status)//传输UAV当前状态、姿态角、高度
    {
        f.send_status = 0;
        ANO_DT_Send_Status(attitude.roll attitude.pitch attitude.yaw attitude.height21);
    }   
/////////////////////////////////////////////////////////////////////////////////////
    else if(f.send_senser)//传输传感器数据6050和磁力计等数据
    {
        f.send_senser = 0;
        ANO_DT_Send_Senser(debug.temp_duty_Kd*100 debug.temp_duty_Kp*100 debug.angleattitude.gyro_xattitude.gyro_yattitude.gyro_zaccel[0]accel[1]accel[2]);
    }   
  else if(f.udata)
{
f.udata=0;
ANO_DT_Send_Udata(000000000);
}
////////////////////////////////

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1344  2019-04-10 21:43  ANO_DT.h
     文件    71165952  2018-11-03 10:37  ANO_TC匿名上位机V65.exe
     文件     1730904  2019-07-12 09:52  匿名V65简易使用说明.docx
     文件       15907  2019-04-10 22:48  ANO_DT.c

评论

共有 条评论