61 lines
1.3 KiB
C++
61 lines
1.3 KiB
C++
#ifndef BALL_HPP
|
|
#define BALL_HPP
|
|
#include "main.h"
|
|
#include "cmsis_os.h"
|
|
#include "FreeRTOS.h"
|
|
#include "bsp_delay.h"
|
|
#include "djiMotor.h"
|
|
#include "pid.h"
|
|
|
|
// 定义状态枚举
|
|
typedef enum {
|
|
BALL_IDLE, // 空闲状态
|
|
BALL_FORWARD, // 正转状态
|
|
BALL_DROP, // 球下落状态
|
|
BALL_REVERSE, // 反转状态
|
|
BALL_CLOSE, // 关闭状态
|
|
BALL_FINISH // 完成状态
|
|
} BallState_t;
|
|
|
|
typedef enum
|
|
{
|
|
MOTOR_1 = 0,
|
|
MOTOR_2 = 1,
|
|
MOTOR_3 = 2,
|
|
MOTOR_DOWN = 3,
|
|
MOTOR_NUM
|
|
}motorhangd_e;
|
|
|
|
// 定义光电传感器检测宏
|
|
#define IS_PHOTOELECTRIC_BALL() (HAL_GPIO_ReadPin(up_ball_GPIO_Port, up_ball_Pin) == GPIO_PIN_RESET)
|
|
|
|
class Ball
|
|
{
|
|
public:
|
|
Ball();
|
|
void Spin(float speed,float speed2);
|
|
void ballHadling(void);
|
|
void Send_control(void);
|
|
void ballStateMachine(void);
|
|
|
|
int16_t result[MOTOR_NUM];
|
|
motor_measure_t *hand_Motor[MOTOR_NUM];
|
|
private:
|
|
|
|
int up_ball_state; //上球状态 0:无球 1:有球
|
|
|
|
//三个摩擦轮
|
|
static const float M3508_speed_PID[3];
|
|
static const float M3508_angle_PID[3];
|
|
|
|
//电机速度pid结构体
|
|
pid_type_def speed_pid[MOTOR_NUM];
|
|
//位置环pid
|
|
pid_type_def angle_pid[MOTOR_NUM];
|
|
|
|
float angleSet;
|
|
float speedSet[MOTOR_NUM];
|
|
};
|
|
|
|
#endif
|