电机扩展模块

常用的 API

/**
 * @brief: 电机扩展模块初始化
 * 
 * @param: NULL
 */
void MOTOR_EX::Setup(void)

/**
 * @brief: 控制电机扩展板所连舵机转动
 * 
 * @param:servo_index:对应的舵机序号
 * @param:angle:角度值
 */
void MOTOR_EX::Servo_Turn(int servo_index, float angle)

/**
 * @brief: 控制电机扩展板所连舵机转动
 * 
 * @param:servo_index:对应的舵机序号
 * @param:c_angle:c舵机转动的角度值
 * @param:d_angle: d舵机转动的角度值
 */
void MOTOR_EX:: Servo_Turn(int servo_index, float c_angle, float d_angle)

/**
 * @brief: 设置舵机旋转范围(初始值为 -100 ~ 100)
 * 
 * @param type: 舵机接口编号(C:1  D:2)
 * @param max_percent: 范围最大值,默认 100
 * @param min_percent: 范围最小值,默认 -100
 * @param zero_percent: 范围零点,默认 0
 */
void MOTOR_EX::Servo_Percent_Setting(int type, float max_percent, float min_percent, float zero_percent)

/**
 * @brief: 控制舵机旋转位置
 * 
 * @param type: 舵机接口编号(C:1  D:2)
 * @param percent: 舵机旋转范围内的旋转百分比(正数为最大值方向的百分比,负数为最小值方向的百分比)
 */
void MOTOR_EX::Servo_Turn_Percent(int type, float percent)

/**
 * @brief: 控制舵机旋转位置
 * 
 * @param type: 舵机接口编号(C:1  D:2)
 * @param c_percent: 舵机旋转范围内的旋转百分比(正数为最大值方向的百分比,负数为最小值方向的百分比)
 * @param d_percent: 舵机旋转范围内的旋转百分比(正数为最大值方向的百分比,负数为最小值方向的百分比)
 */
void MOTOR_EX::Servo_Turn_Percent(int type, float c_percent, float d_percent)

/**
 * @brief: 
 * 
 * @param type: 1代表外扩电机a  2代表外扩电机b 支持按位或
 * @param mode: 0: 无模式;1:控制时间(秒);2:控制角度(度);3:控制圈数(圈)
 * @param ctr_para: 控制模式的参数,例如控制时间模式,ctr_para=0.1时,代表控制电机转0.1秒
 * @param a_speed: a电机的转动速度
 * @param b_speed: b电机的转动速度
 */
void MOTOR_EX::Control_Motor_Running(byte type, byte mode, float ctr_para, float a_speed, float b_speed)

/**
 * @brief: 控制a、b电机以一定的差速实现小车转向行驶
 * 
 * @param mode: 0: 无模式;1:控制时间(秒);2:控制角度(度);3:控制圈数(圈)
 * @param ctr_para: 控制模式的参数,例如控制时间模式,ctr_para=0.1时,代表控制电机转0.1秒
 * @param direction: 方向转向程度,取值范围 -100~100
 * @param speed: a、b电机中最大的转速
 */
void MOTOR_EX::Control_Motor_Turnning(byte mode, float ctr_para, float direction, float speed)

/**
 * @brief: 电机闭环刹车,如果电机高速行驶中突然闭环刹车,会引起电机抖动
 * 
 * @param type: 1代表外扩电机a  2代表外扩电机b 支持按位或
 */
void MOTOR_EX::Motor_Brake(uint8_t type)

/**
 * @brief: 电机惯性停止
 * 
 * @param type: 1代表外扩电机a  2代表外扩电机b 支持按位或
 */
void MOTOR_EX::Motor_Free(uint8_t type)

/**
 * @brief: 获取电机旋转角度
 * 
 * @param motor: 电机编号 a 和 b
 * @return: 电机旋转角度
 */
float MOTOR_EX::Get_RotateAngle(uint8_t type)

/**
 * @brief: 清零电机旋转角度
 * 
 * @param motor: 电机编号 a 和 b
 */
void MOTOR_EX::Clear_RotateAngle(uint8_t type)

/**
 * @brief: 获取速度
 * 
 * @param motor: 电机编号 A 和 B
 * @return:电机速度
 */
float MOTOR_EX::Get_Speed(uint8_t type)


Tbot I 系统编程示范

    Motor_Ex.Setup();
    Motor_Ex.Clear_RotateAngle(0x03);
    Motor_Ex.Control_Motor_Running(0x03,0,0,-20,10);
    Motor_Ex.Servo_Turn(0x01,0);
    Motor_Ex.Servo_Turn(0x02,0); 
    Motor_Ex.Servo_Turn(0x03, 0, 0); 
    Motor_Ex.Servo_Turn_Percent(0x01, -100); 
    Motor_Ex.Servo_Turn_Percent(0x02, -100); 
    Motor_Ex.Servo_Turn(0x01,180); 
    Motor_Ex.Servo_Turn(0x02,180);
    Motor_Ex.Servo_Turn(0x03, 180, 180); 
    Motor_Ex.Servo_Turn_Percent(0x01, 100); 
    Motor_Ex.Servo_Turn_Percent(0x02, 0); 
    Motor_Ex.Control_Motor_Running(0x01,2,360,-20,50); 
    Motor_Ex.Control_Motor_Turnning(2, 360, 0,10); 
    Motor_Ex.Motor_Brake(0x03); 
    Motor_Ex.Motor_Free(0x03);    
    float a_angle = Motor_Ex.Get_RotateAngle(0x01);
    float b_angle = Motor_Ex.Get_RotateAngle(0x02); 
    float a_speed = Motor_Ex.Get_Speed(0x01);    
    float b_speed = Motor_Ex.Get_Speed(0x02);

results matching ""

    No results matching ""