⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 macmove.c

📁 简单双马达玩具车驱动 包装~
💻 C
字号:
/**********************************************************************
**
**          Copyright (c) 2008 -- Michael.All right received.
**
**          PROJECT: Tangtang's Graduation Design
**
**          PURPOSE: Motor drive wrapper.
**
**          DATE : 05/18/2008
**
**          AUTHOR: Michael
**
**          SCHOOL: CUIT
**
**          FILENAME: macmove.c
**
**********************************************************************/


/* Include files. */

#include "macmove.h"

/* Macro constant definitions. */



/* Type definitions. */


/* Local function declarations. */


/* Macro API definitions. */



/* Global variable definitions. */


/**********************************************************************
**  Function Name: MacMoveStop()
**  Purpose:
**    Machine operat wraper -- Machine stop move.
**  Parameters:
**    None
**  Return:
**    OS_RET_SUCCESS - operat sucessful.
**    OS_RET_FAILED - operat failed.
**    OS_RET_INVALID_ARG - invalid argument.
**  Notes:
**    None.
**********************************************************************/

eOsReturn
MacMoveStop()
{

    eMotor moterL, moterR;
    eMotorOptType optType;
    int32 arg;
    eOsReturn retL,retR;


    ENTRY_FUN();

    moterL = E_MOTOR_LEFT;
    moterR = E_MOTOR_RIGHT;
    optType = E_MOTOR_OPT_TYPE_DISTANCE;
    arg = MOVE_FOREVER;
    retL = OS_RET_SUCCESS;
    retR = OS_RET_SUCCESS;

    /* Make left and right motor move forward forever. */
    retL = MotorStop(moterL, optType, arg);
    retR = MotorStop(moterR, optType, arg);

    if(retL != OS_RET_SUCCESS)
    {
        TRACE_LOG("Call MotorStop() Failed return: %d \n",retL);
        return(retL);
    }

    if(retR != OS_RET_SUCCESS)
    {
        TRACE_LOG("Call MotorStop() Failed return: %d \n",retR);
        return(retR);
    }

    EXIT_FUN();

    return(OS_RET_SUCCESS);

} /* End of MacMoveStop */


/**********************************************************************
**  Function Name: MacMoveForward()
**  Purpose:
**    Machine operat wraper -- Machine move forward.
**  Parameters:
**    None
**  Return:
**    OS_RET_SUCCESS - operat sucessful.
**    OS_RET_FAILED - operat failed.
**    OS_RET_INVALID_ARG - invalid argument.
**  Notes:
**    None.
**********************************************************************/

eOsReturn
MacMoveForward()
{

    eMotor moterL, moterR;
    eMotorOptType optType;
    eMotorRunType runType;
    int32 arg;
    eOsReturn retL,retR;


    ENTRY_FUN();

    moterL = E_MOTOR_LEFT;
    moterR = E_MOTOR_RIGHT;
    optType = E_MOTOR_OPT_TYPE_DISTANCE;
    runType = E_MOTOR_RUN_TYPE_MOVE_FORWARD;
    arg = MOVE_FOREVER;
    retL = OS_RET_SUCCESS;
    retR = OS_RET_SUCCESS;

    /* Make left and right motor move forward forever. */
    retL = MotorRun(moterL, optType, runType, arg);
    retR = MotorRun(moterR, optType, runType, arg);

    if(retL != OS_RET_SUCCESS)
    {
        TRACE_LOG("Call MotorRun() Failed return: %d \n",retL);
        return(retL);
    }

    if(retR != OS_RET_SUCCESS)
    {
        TRACE_LOG("Call MotorRun() Failed return: %d \n",retR);
        return(retR);
    }

    EXIT_FUN();

    return(OS_RET_SUCCESS);

} /* End of MacMoveForward */



/**********************************************************************
**  Function Name: MacMoveBackward()
**  Purpose:
**    Machine operat wraper -- Machine move backward.
**  Parameters:
**    None
**  Return:
**    OS_RET_SUCCESS - operat sucessful.
**    OS_RET_FAILED - operat failed.
**    OS_RET_INVALID_ARG - invalid argument.
**  Notes:
**    None.
**********************************************************************/

eOsReturn
MacMoveBackward()
{

    eMotor moterL, moterR;
    eMotorOptType optType;
    eMotorRunType runType;
    int32 arg;
    eOsReturn retL,retR;


    ENTRY_FUN();

    moterL = E_MOTOR_LEFT;
    moterR = E_MOTOR_RIGHT;
    optType = E_MOTOR_OPT_TYPE_DISTANCE;
    runType = E_MOTOR_RUN_TYPE_MOVE_BACKWARD;
    arg = MOVE_FOREVER;
    retL = OS_RET_SUCCESS;
    retR = OS_RET_SUCCESS;

    /* Make left and right motor move backward forever. */
    retL = MotorRun(moterL, optType, runType, arg);
    retR = MotorRun(moterR, optType, runType, arg);

    if(retL != OS_RET_SUCCESS)
    {
        TRACE_LOG("Call MotorRun() Failed return: %d \n",retL);
        return(retL);
    }

    if(retR != OS_RET_SUCCESS)
    {
        TRACE_LOG("Call MotorRun() Failed return: %d \n",retR);
        return(retR);
    }

    EXIT_FUN();

    return(OS_RET_SUCCESS);

} /* End of MacMoveBackward */


/**********************************************************************
**  Function Name: MacMoveTurnLeft()
**  Purpose:
**    Machine operat wraper -- Machine turn left "angle".
**  Parameters:
**    uint32 angle - the angle of turn left.
**  Return:
**    OS_RET_SUCCESS - operat sucessful.
**    OS_RET_FAILED - operat failed.
**    OS_RET_INVALID_ARG - invalid argument.
**  Notes:
**    None.
**********************************************************************/

eOsReturn
MacMoveTurnLeft(double angle)
{

    eMotor moterL;
    eMotorOptType optType;
    eMotorRunType runTypeL1, runTypeL2;
    int32 arg1, arg2;
    eOsReturn retL,retR;


    ENTRY_FUN();

    moterL = E_MOTOR_LEFT;
    optType = E_MOTOR_OPT_TYPE_DISTANCE;
    runTypeL1 = E_MOTOR_RUN_TYPE_MOVE_BACKWARD;
    runTypeL2 = E_MOTOR_RUN_TYPE_MOVE_FORWARD;
    retL = OS_RET_SUCCESS;
    retR = OS_RET_SUCCESS;
    arg1 = Angle2Distance(angle);
    arg2 = MOVE_FOREVER;

    /* Make left motor move backward "arg" distance after that It move forward at once. */
    retL = MotorRun(moterL, optType, runTypeL1, arg1);
    if(retL != OS_RET_SUCCESS)
    {
        TRACE_LOG("Call MotorRun() Failed return: %d \n",retL);
        return(retL);
    }
    retL = MotorRun(moterL, optType, runTypeL2, arg2);
    if(retL != OS_RET_SUCCESS)
    {
        TRACE_LOG("Call MotorRun() Failed return: %d \n",retL);
        return(retL);
    }


    EXIT_FUN();

    return(OS_RET_SUCCESS);

} /* End of MacMoveTurnLeft */


/**********************************************************************
**  Function Name: MacMoveTurnRight()
**  Purpose:
**    Machine operat wraper -- Machine turn right "angle".
**  Parameters:
**    uint32 angle - the angle of turn right.
**  Return:
**    OS_RET_SUCCESS - operat sucessful.
**    OS_RET_FAILED - operat failed.
**    OS_RET_INVALID_ARG - invalid argument.
**  Notes:
**    None.
**********************************************************************/

eOsReturn
MacMoveTurnRight(double angle)
{

    eMotor moterL;
    eMotorOptType optType;
    eMotorRunType runTypeL1, runTypeL2;
    int32 arg1, arg2;
    eOsReturn retL,retR;


    ENTRY_FUN();

    moterL = E_MOTOR_RIGHT;
    optType = E_MOTOR_OPT_TYPE_DISTANCE;
    runTypeL1 = E_MOTOR_RUN_TYPE_MOVE_BACKWARD;
    runTypeL2 = E_MOTOR_RUN_TYPE_MOVE_FORWARD;
    retL = OS_RET_SUCCESS;
    retR = OS_RET_SUCCESS;
    arg1 = Angle2Distance(angle);
    arg2 = MOVE_FOREVER;

    /* Make right  motor move backward "arg" distance after that It move forward at once. */
    retL = MotorRun(moterL, optType, runTypeL1, arg1);
    if(retL != OS_RET_SUCCESS)
    {
        TRACE_LOG("Call MotorRun() Failed return: %d \n",retL);
        return(retL);
    }
    retL = MotorRun(moterL, optType, runTypeL2, arg2);
    if(retL != OS_RET_SUCCESS)
    {
        TRACE_LOG("Call MotorRun() Failed return: %d \n",retL);
        return(retL);
    }


    EXIT_FUN();

    return(OS_RET_SUCCESS);

} /* End of MacMoveTurnRight */


/**********************************************************************
**  Function Name: Angle2Distance()
**  Purpose:
**    convert angle to distance.
**  Parameters:
**    double angle - the angle of turn left.
**  Return:
**    uint32 distance - the distance that wheel need to move.
**  Notes:
**    None.
**********************************************************************/

uint32
Angle2Distance(double angle)
{

    uint32 distance; 


    distance = (angle * PI * (WHEEL_DISTANCE / 2)) / 180;

    return(distance);

} /* End of Angle2Distance() */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -