void Car_Test(void){ Car_forward(1000); Delay(10000); Car_Stop(1000); Delay(10000); Car_Backward(1000); Delay(10000); Car_Stop(1000); Delay(10000); }
/********************************************************************************************************* * 函 数 名: CAR_Config * 功能说明: 小车配置函数 * 形 参:小车结构体指针 * 返 回 值: ********************************************************************************************************* */ _Error CAR_Config(_Car *car) { if(!car->direction) return ERROR_DIR; switch(car->direction ) { case FORWARD: MOTOR_11_OUT += car->speed_step ; MOTOR_12_OUT = DEFAULT_MIN; MOTOR_21_OUT += car->speed_step ; MOTOR_22_OUT = DEFAULT_MIN; //constrain pwm out if(MOTOR_11_OUT > DEFAULT_MAX) MOTOR_11_OUT = DEFAULT_MAX; if(MOTOR_11_OUT < DEFAULT_MIN) MOTOR_11_OUT = DEFAULT_MIN; if(MOTOR_21_OUT > DEFAULT_MAX) MOTOR_21_OUT = DEFAULT_MAX; if(MOTOR_21_OUT < DEFAULT_MIN) MOTOR_21_OUT = DEFAULT_MIN; break; case BACKWARD: MOTOR_11_OUT = DEFAULT_MIN; MOTOR_12_OUT += car->speed_step ; MOTOR_21_OUT = DEFAULT_MIN; MOTOR_22_OUT += car->speed_step ; //constrain pwm out if(MOTOR_12_OUT > DEFAULT_MAX) MOTOR_12_OUT = DEFAULT_MAX; if(MOTOR_12_OUT < DEFAULT_MIN) MOTOR_12_OUT = DEFAULT_MIN; if(MOTOR_22_OUT > DEFAULT_MAX) MOTOR_22_OUT = DEFAULT_MAX; if(MOTOR_22_OUT < DEFAULT_MIN) MOTOR_22_OUT = DEFAULT_MIN; break; case LEFT: MOTOR_11_OUT = DEFAULT_MIN; MOTOR_12_OUT = DEFAULT_AVR ; MOTOR_21_OUT += car->speed_step ; MOTOR_22_OUT = 0; //constrain pwm out if(MOTOR_21_OUT > DEFAULT_MAX) MOTOR_21_OUT = DEFAULT_MAX; if(MOTOR_21_OUT < DEFAULT_MIN) MOTOR_21_OUT = DEFAULT_MIN; break; case RIGHT: MOTOR_11_OUT += car->speed_step; MOTOR_12_OUT = 0; MOTOR_21_OUT = DEFAULT_MIN; MOTOR_22_OUT = DEFAULT_AVR ; //constrain pwm out if(MOTOR_11_OUT > DEFAULT_MAX) MOTOR_11_OUT = DEFAULT_MAX; if(MOTOR_11_OUT < DEFAULT_MIN) MOTOR_11_OUT = DEFAULT_MIN; break; case STOP : Car_Stop(); car->speed_step = 0; // 小车停止时是不允许加减速的 break; } // if(MOTOR_11_OUT > DEFAULT_MAX) // MOTOR_11_OUT = DEFAULT_MAX; // if(MOTOR_11_OUT < DEFAULT_MIN) // MOTOR_11_OUT = DEFAULT_MIN; // // if(MOTOR_12_OUT > DEFAULT_MAX) // MOTOR_12_OUT = DEFAULT_MAX; // if(MOTOR_12_OUT < DEFAULT_MIN) // MOTOR_12_OUT = DEFAULT_MIN; // // if(MOTOR_21_OUT > DEFAULT_MAX) // MOTOR_21_OUT = DEFAULT_MAX; // if(MOTOR_21_OUT < DEFAULT_MIN) // MOTOR_21_OUT = DEFAULT_MIN; // // if(MOTOR_22_OUT > DEFAULT_MAX) // MOTOR_22_OUT = DEFAULT_MAX; // if(MOTOR_22_OUT < DEFAULT_MIN) // MOTOR_22_OUT = DEFAULT_MIN; return NO_ERROR; }