将各类库静态化

This commit is contained in:
lxbpxylps@126.com 2021-03-22 12:18:27 +08:00
parent 8e04862c86
commit dea3f23e52
7 changed files with 77 additions and 75 deletions

View File

@ -6,26 +6,27 @@
#include <NeoHWSerial.h>
#endif
Move::Move()
{
global_speed_rate = DEFAULT_GLOBAL_SPEED_RATE;
current_direction = STOP;
current_speed_rate = 0.0;
}
//静态变量
float Move::global_speed_rate = DEFAULT_GLOBAL_SPEED_RATE; //全局速度比率
uint8_t Move::current_direction = STOP; //当前运动状态
float Move::current_speed_rate = 0.0; //当前运动速度比率
float Move::current_turn_speed_rate; //当前转向时一侧减速的比率
Move::Move() {}
Move::Move(float global_speed_rate)
{
Move();
this->global_speed_rate = global_speed_rate;
Move::global_speed_rate = global_speed_rate;
}
//设置全局速度比率
void Move::SetGlobalSpeedRate(float global_speed_rate)
{
this->global_speed_rate = global_speed_rate;
Move::global_speed_rate = global_speed_rate;
}

View File

@ -55,29 +55,29 @@ public:
Move();
Move(float global_speed_rate);
void SetGlobalSpeedRate(float global_speed_rate); //设置全局速度比率
static void SetGlobalSpeedRate(float global_speed_rate); //设置全局速度比率
uint8_t GetCurrentMove(void); //获取当前运动方向
float GetCurrentSpeedRate(void); //获取当前运动速度比率
float GetCurrentTurnSpeedRate(void); //获取当前转向时一侧减速的比率
static uint8_t GetCurrentMove(void); //获取当前运动方向
static float GetCurrentSpeedRate(void); //获取当前运动速度比率
static float GetCurrentTurnSpeedRate(void); //获取当前转向时一侧减速的比率
void Wheel(uint8_t wheel, uint8_t rotation, float speed_rate = 1.0); //控制某个轮子转动
static void Wheel(uint8_t wheel, uint8_t rotation, float speed_rate = 1.0); //控制某个轮子转动
void Forward(float speed_rate = 1.0); //前进
void Backward(float speed_rate = 1.0); //后退
void ForLeftward(float speed_rate = 1.0, float turn_speed_rate = DEFAULT_TRUN_SPEED_RATE); //向前左转
void ForRightward(float speed_rate = 1.0, float turn_speed_rate = DEFAULT_TRUN_SPEED_RATE); //向前右转
void BackLeftward(float speed_rate = 1.0, float turn_speed_rate = DEFAULT_TRUN_SPEED_RATE); //向后左转
void BackRightward(float speed_rate = 1.0, float turn_speed_rate = DEFAULT_TRUN_SPEED_RATE); //向后右转
void Stop(void); //制动
static void Forward(float speed_rate = 1.0); //前进
static void Backward(float speed_rate = 1.0); //后退
static void ForLeftward(float speed_rate = 1.0, float turn_speed_rate = DEFAULT_TRUN_SPEED_RATE); //向前左转
static void ForRightward(float speed_rate = 1.0, float turn_speed_rate = DEFAULT_TRUN_SPEED_RATE); //向前右转
static void BackLeftward(float speed_rate = 1.0, float turn_speed_rate = DEFAULT_TRUN_SPEED_RATE); //向后左转
static void BackRightward(float speed_rate = 1.0, float turn_speed_rate = DEFAULT_TRUN_SPEED_RATE); //向后右转
static void Stop(void); //制动
void MoveDirection(uint8_t direction, float speed_rate = 1.0, float turn_speed_rate = DEFAULT_TRUN_SPEED_RATE); //向某方向运动
static void MoveDirection(uint8_t direction, float speed_rate = 1.0, float turn_speed_rate = DEFAULT_TRUN_SPEED_RATE); //向某方向运动
private:
float global_speed_rate; //全局速度比率
uint8_t current_direction; //当前运动状态
float current_speed_rate; //当前运动速度比率
float current_turn_speed_rate; //当前转向时一侧减速的比率
static float global_speed_rate; //全局速度比率
static uint8_t current_direction; //当前运动状态
static float current_speed_rate; //当前运动速度比率
static float current_turn_speed_rate; //当前转向时一侧减速的比率
};

View File

@ -5,13 +5,11 @@
//静态变量
HandleMessageFunction Radio::hm_func;
NeoHWSerial* Radio::NeoSerialX;
NeoHWSerial* Radio::NeoSerialX = &RADIO_SERIAL_NUM;
Radio::Radio()
{
NeoSerialX = &RADIO_SERIAL_NUM;
EnableReceiveInterrupt();
}
@ -19,7 +17,7 @@ Radio::Radio()
//打开串口
void Radio::BeginTransmit(unsigned long baud_rate)
{
NeoSerialX->begin(RADIO_BAUD_RATE);
NeoSerialX->begin(baud_rate);
}

View File

@ -7,6 +7,17 @@
#include <NeoHWSerial.h>
#endif
//静态变量
int Sensor::gray_1_gate = DEFAULT_GRAY_1_GATE;
int Sensor::gray_2_gate = DEFAULT_GRAY_2_GATE;
int Sensor::gray_3_gate = DEFAULT_GRAY_3_GATE;
int Sensor::gray_4_gate = DEFAULT_GRAY_4_GATE;
int Sensor::gray_5_gate = DEFAULT_GRAY_5_GATE;
int Sensor::gray_6_gate = DEFAULT_GRAY_6_GATE;
int Sensor::gray_7_gate = DEFAULT_GRAY_7_GATE;
Sensor::Sensor()
{
pinMode(BUTTON_1_OUT, INPUT_PULLUP);
@ -38,15 +49,6 @@ Sensor::Sensor()
pinMode(BUTTON_2_VCC, OUTPUT);
digitalWrite(BUTTON_2_VCC, HIGH);
//设置灰度值为默认值
SetGrayGate(GRAY_1, DEFAULT_GRAY_1_GATE);
SetGrayGate(GRAY_2, DEFAULT_GRAY_2_GATE);
SetGrayGate(GRAY_3, DEFAULT_GRAY_3_GATE);
SetGrayGate(GRAY_4, DEFAULT_GRAY_4_GATE);
SetGrayGate(GRAY_5, DEFAULT_GRAY_5_GATE);
SetGrayGate(GRAY_6, DEFAULT_GRAY_6_GATE);
SetGrayGate(GRAY_7, DEFAULT_GRAY_7_GATE);
}

View File

@ -67,35 +67,35 @@ public:
Sensor();
//设置灰度传感器临界值
void SetGrayGate(uint8_t gray_sensor_num, int gate);
static void SetGrayGate(uint8_t gray_sensor_num, int gate);
//使灰度传感器闪烁
void FlashGraySensor(uint8_t gray_sensor_num);
static void FlashGraySensor(uint8_t gray_sensor_num);
//灰度传感器判断下方是否为白色
bool IsWhite(uint8_t gray_sensor_num);
static bool IsWhite(uint8_t gray_sensor_num);
//灰度传感器灰度值偏离比例,即 (gray_gate - gray_val) / gray_gate
float GrayDeviationRate(uint8_t gray_sensor_num);
static float GrayDeviationRate(uint8_t gray_sensor_num);
//碰撞传感器(开关)判断是否闭合
bool IsPushed(uint8_t button_num);
static bool IsPushed(uint8_t button_num);
//开启 HMC5883 的 I2C 通讯
void StartHMC5883(void);
static void StartHMC5883(void);
//返回朝向角
float GetAngle(void);
static float GetAngle(void);
private:
//灰度传感器临界值
int gray_1_gate;
int gray_2_gate;
int gray_3_gate;
int gray_4_gate;
int gray_5_gate;
int gray_6_gate;
int gray_7_gate;
static int gray_1_gate;
static int gray_2_gate;
static int gray_3_gate;
static int gray_4_gate;
static int gray_5_gate;
static int gray_6_gate;
static int gray_7_gate;
};

View File

@ -11,16 +11,17 @@
#define BYTE_TO_HW(A, B) ((((uint16_t)(A)) << 8) | (uint8_t)(B))
Servo::Servo()
{
NeoSerialX = &SERVO_SERIAL_NUM; //默认使用 Mega 板 18 19 作为串口通信端口
}
//静态变量
NeoHWSerial* Servo::NeoSerialX = &SERVO_SERIAL_NUM;
Servo::Servo() {}
//打开串口
void Servo::BeginTransmit(unsigned long baud_rate)
{
NeoSerialX->begin(SERVO_BAUD_RATE);
NeoSerialX->begin(baud_rate);
}

View File

@ -53,28 +53,28 @@ class Servo
public:
Servo();
void BeginTransmit(unsigned long baud_rate = SERVO_BAUD_RATE); //打开串口
static void BeginTransmit(unsigned long baud_rate = SERVO_BAUD_RATE); //打开串口
void MoveServo(uint8_t servo_id, uint16_t position, uint16_t time); //控制单个舵机转动
static void MoveServo(uint8_t servo_id, uint16_t position, uint16_t time); //控制单个舵机转动
void RunActionGroup(uint8_t action_num, uint16_t times); //运行指定动作组
void StopActionGroup(void); //停止动作组运行
void SetActionGroupSpeed(uint8_t action_num, float speed); //设定指定动作组的运行速度
void SetAllActionGroupSpeed(float speed); //设置所有动作组的运行速度
static void RunActionGroup(uint8_t action_num, uint16_t times); //运行指定动作组
static void StopActionGroup(void); //停止动作组运行
static void SetActionGroupSpeed(uint8_t action_num, float speed); //设定指定动作组的运行速度
static void SetAllActionGroupSpeed(float speed); //设置所有动作组的运行速度
void OpenClaw(void); //打开爪子
static void OpenClaw(void); //打开爪子
void Reset(float speed = SERVO_NORMAL_SPEED); //恢复初始状态,指定速度
void Down(float speed = SERVO_NORMAL_SPEED); //放下爪子,指定速度
void Catch(float speed = SERVO_NORMAL_SPEED); //抓取,指定速度
void Release(float speed = SERVO_NORMAL_SPEED); //释放,指定速度
void GainDown(float speed = SERVO_NORMAL_SPEED); //增益点放下爪子,指定速度
void GainCatch(float speed = SERVO_NORMAL_SPEED); //增益点抓取,指定速度
void GainUp(float speed = SERVO_NORMAL_SPEED); //增益点抬升,指定速度
void StopAndReset(float speed = SERVO_NORMAL_SPEED); //停止舵机并恢复初始状态,指定速度
static void Reset(float speed = SERVO_NORMAL_SPEED); //恢复初始状态,指定速度
static void Down(float speed = SERVO_NORMAL_SPEED); //放下爪子,指定速度
static void Catch(float speed = SERVO_NORMAL_SPEED); //抓取,指定速度
static void Release(float speed = SERVO_NORMAL_SPEED); //释放,指定速度
static void GainDown(float speed = SERVO_NORMAL_SPEED); //增益点放下爪子,指定速度
static void GainCatch(float speed = SERVO_NORMAL_SPEED); //增益点抓取,指定速度
static void GainUp(float speed = SERVO_NORMAL_SPEED); //增益点抬升,指定速度
static void StopAndReset(float speed = SERVO_NORMAL_SPEED); //停止舵机并恢复初始状态,指定速度
private:
NeoHWSerial* NeoSerialX;
static NeoHWSerial* NeoSerialX;
};