Car/TaiChi/move.h
2021-02-10 20:13:28 +08:00

75 lines
1.8 KiB
C++

#ifndef MOVE_H
#define MOVE_H
//轮胎定义
#define LEFT_A_WHEEL 0
#define LEFT_B_WHEEL 1
#define RIGHT_A_WHEEL 2
#define RIGHT_B_WHEEL 3
//轮胎旋转方向定义,包括停止
#define FORWARD_ROTATION 0
#define BACKWARD_ROTATION 1
#define STOP_ROTATION 3
//运动状态定义
#define FORWARD 0
#define BACKWARD 1
#define FORLEFTWARD 2
#define BACKLEFTWARD 3
#define FORRIGHTWARD 4
#define BACKRIGHTWARD 5
#define STOP 6
//默认全局速度比率
#define DEFAULT_GLOBAL_SPEED_RATE 100
//转向时一侧减速的比率
#define TRUN_SPEED_RATE 50
//左侧 L298N 接口定义
#define LEFT_L298N_IN1 22
#define LEFT_L298N_IN2 23
#define LEFT_L298N_IN3 24
#define LEFT_L298N_IN4 25
#define LEFT_L298N_ENA 8
#define LEFT_L298N_ENB 9
//右侧 L298N 接口定义
#define RIGHT_L298N_IN1 26
#define RIGHT_L298N_IN2 27
#define RIGHT_L298N_IN3 28
#define RIGHT_L298N_IN4 29
#define RIGHT_L298N_ENA 10
#define RIGHT_L298N_ENB 11
class Move
{
public:
Move();
Move(int global_speed_rate);
void SetGlobalSpeedRate(int global_speed_rate); //设置全局速度比率
uint8_t GetCurrentMove(void); //获取当前运动方向
int GetCurrentSpeedRate(void); //获取当前运动速度比率
void Wheel(uint8_t wheel, uint8_t rotation, int speed_rate = 100); //控制某个轮子转动
void Forward(int speed_rate = 100); //前进
void Backward(int speed_rate = 100); //后退
void ForLeftward(int speed_rate = 100); //向前左转
void ForRightward(int speed_rate = 100); //向前右转
void BackLeftward(int speed_rate = 100); //向后左转
void BackRightward(int speed_rate = 100); //向后右转
void Stop(void); //制动
private:
int global_speed_rate; //全局速度比率
uint8_t current_move; //当前运动状态
int current_speed_rate; //当前运动速度比率
};
#endif