修正部分错误

This commit is contained in:
lxbpxylps@126.com 2021-02-15 10:58:46 +08:00
parent d1ef4b93c5
commit 2efd7a390b

View File

@ -79,7 +79,7 @@ uint8_t next_position = FRONT_NEXT;
//****************************************自定函数**************************************** //****************************************自定函数****************************************
//计算方向 //计算方向,同时更改完成转向后相对下一点的朝向
uint8_t CalcDirection(void); uint8_t CalcDirection(void);
#define FRONT_END 0 #define FRONT_END 0
@ -116,11 +116,9 @@ void setup()
void loop() void loop()
{ {
//情况一:刚完整经过普通点,下一个点为普通点 //情况一:刚完整经过普通点,下一个点为普通点
if (route[passed_flag][TYPE] == NORMAL_POINT && route[passed_flag + 1][TYPE] == NORMAL_POINT) if (route[passed_flag][TYPE] == NORMAL_POINT && route[next_flag][TYPE] == NORMAL_POINT)
{ {
uint8_t direction = CalcDirection(); if (next_position == FRONT_NEXT)
if (direction == FORWARD || direction == FORLEFTWARD || direction == FORRIGHTWARD)
{ {
//沿线直行,到前端传感器接触下一条线为止 //沿线直行,到前端传感器接触下一条线为止
LineForward(FRONT_END); LineForward(FRONT_END);
@ -132,10 +130,10 @@ void loop()
} }
//继续直行或后退或转向 //继续直行或后退或转向
TurnDirection(direction); TurnDirection(CalcDirection());
} }
//情况二:刚完整经过普通点,下一个点为抓取点 //情况二:刚完整经过普通点,下一个点为抓取点
else if (route[passed_flag][TYPE] == NORMAL_POINT && route[passed_flag + 1][TYPE] == CATCH_POINT) else if (route[passed_flag][TYPE] == NORMAL_POINT && route[next_flag][TYPE] == CATCH_POINT)
{ {
//沿线直行,在抓取位置停止 //沿线直行,在抓取位置停止
LineForward(CATCH_END); LineForward(CATCH_END);
@ -154,7 +152,7 @@ void loop()
route[passed_flag][TYPE] = NORMAL_POINT; route[passed_flag][TYPE] = NORMAL_POINT;
} }
//情况三:刚完整经过普通点,下一个点为释放点 //情况三:刚完整经过普通点,下一个点为释放点
else if (route[passed_flag][TYPE] == NORMAL_POINT && route[passed_flag + 1][TYPE] == RELEASE_POINT) else if (route[passed_flag][TYPE] == NORMAL_POINT && route[next_flag][TYPE] == RELEASE_POINT)
{ {
//沿线直行,在释放位置停止 //沿线直行,在释放位置停止
LineForward(RELEASE_END); LineForward(RELEASE_END);
@ -167,10 +165,8 @@ void loop()
next_position = BACK_NEXT; next_position = BACK_NEXT;
} }
//情况四:刚完整经过释放点,下一个点为普通点 //情况四:刚完整经过释放点,下一个点为普通点
else if (route[passed_flag][TYPE] == RELEASE_POINT && route[passed_flag + 1][TYPE] == NORMAL_POINT) else if (route[passed_flag][TYPE] == RELEASE_POINT && route[next_flag][TYPE] == NORMAL_POINT)
{ {
uint8_t direction = CalcDirection();
//沿线后退,到后端传感器接触下一条线为止 //沿线后退,到后端传感器接触下一条线为止
LineBackward(BACK_END); LineBackward(BACK_END);
@ -179,7 +175,7 @@ void loop()
delay(RESET_DELAY_TIME); //复原留时 delay(RESET_DELAY_TIME); //复原留时
//继续后退或转向 //继续后退或转向
TurnDirection(direction); TurnDirection(CalcDirection());
} }
else move.Stop(); //DEBUG else move.Stop(); //DEBUG
@ -195,7 +191,7 @@ void loop()
} }
//计算方向 //计算方向,同时更改完成转向后相对下一点的朝向
uint8_t CalcDirection(void) uint8_t CalcDirection(void)
{ {
//计算第三点与第一点的相对坐标 rx0, ry0 //计算第三点与第一点的相对坐标 rx0, ry0
@ -287,7 +283,7 @@ uint8_t CalcDirection(void)
void LineForward(uint8_t end_position, double speed_rate) void LineForward(uint8_t end_position, double speed_rate)
{ {
//记录开始时间 //记录开始时间
int begin_time = micros(); unsigned long begin_time = micros();
while(1) while(1)
{ {