diff --git a/TaiChi/moveTaiChi.cpp b/TaiChi/moveTaiChi.cpp index ac80a60..02d79c6 100644 --- a/TaiChi/moveTaiChi.cpp +++ b/TaiChi/moveTaiChi.cpp @@ -6,26 +6,27 @@ #include #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; } diff --git a/TaiChi/moveTaiChi.h b/TaiChi/moveTaiChi.h index af1b3d0..7feecb1 100644 --- a/TaiChi/moveTaiChi.h +++ b/TaiChi/moveTaiChi.h @@ -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; //当前转向时一侧减速的比率 }; diff --git a/TaiChi/radioTaiChi.cpp b/TaiChi/radioTaiChi.cpp index 0eac844..b2d17c1 100644 --- a/TaiChi/radioTaiChi.cpp +++ b/TaiChi/radioTaiChi.cpp @@ -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); } diff --git a/TaiChi/sensorTaiChi.cpp b/TaiChi/sensorTaiChi.cpp index 728d07f..6ff148e 100644 --- a/TaiChi/sensorTaiChi.cpp +++ b/TaiChi/sensorTaiChi.cpp @@ -7,6 +7,17 @@ #include #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); } diff --git a/TaiChi/sensorTaiChi.h b/TaiChi/sensorTaiChi.h index 47b5034..91583f8 100644 --- a/TaiChi/sensorTaiChi.h +++ b/TaiChi/sensorTaiChi.h @@ -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; }; diff --git a/TaiChi/servoTaiChi.cpp b/TaiChi/servoTaiChi.cpp index f8821e8..e5302fb 100644 --- a/TaiChi/servoTaiChi.cpp +++ b/TaiChi/servoTaiChi.cpp @@ -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); } diff --git a/TaiChi/servoTaiChi.h b/TaiChi/servoTaiChi.h index e64f662..47a9642 100644 --- a/TaiChi/servoTaiChi.h +++ b/TaiChi/servoTaiChi.h @@ -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; };