encoder
void right_motor_forward(int value)
{
MOTOR_RIGHT_DIR=0;
setup_timer_2(T2_DIV_BY_4,124,1); // Dieu xung 10kHz
setup_ccp1(CCP_PWM);
set_pwm1_duty(value);
}
void left_motor_forward(int value)
{
MOTOR_left_DIR=0;
setup_timer_2(T2_DIV_BY_4,124,1); // Dieu xung 10kHz
setup_ccp2(CCP_PWM);
set_pwm2_duty(value);
}
void left_motor_reverse(int value)
{
MOTOR_LEFT_DIR=1;
setup_timer_2(T2_DIV_BY_4,124,1); // Dieu xung 10kHz
setup_ccp2(CCP_PWM);
set_pwm2_duty(value);
}
void right_motor_reverse(int value)
{
MOTOR_right_DIR=1;
setup_timer_2(T2_DIV_BY_4,124,1); // Dieu xung 10kHz
setup_ccp2(CCP_PWM);
set_pwm2_duty(value);
}
void left_motor_stop()
{
setup_ccp1(CCP_OFF);
}
void right_motor_stop()
{
setup_ccp1(CCP_OFF);
}
void left_motor_stop()
{
setup_ccp1(CCP_OFF);
}
void right_motor_stop()
{
setup_ccp1(CCP_OFF);
} // Chương trình xử lý tốc độ 2
động cơ
// 0:Stop,100:FORWARD 100%,-100:Reverse 100%
void speed (signed int left_motor_speed, signed int right_motor_speed)
{
int left_pwm_value=0,right_pwm_value=0;
/* Left motor */
if( left_motor_speed >= 0 )
{
left_pwm_value = 1.25*left_motor_speed; // (125*left_motor_speed/100)
left_motor_forward(left_pwm_value);
}
else
{
left_motor_speed = -left_motor_speed;
left_pwm_value = 1.25*left_motor_speed; // (125*left_motor_speed/100)
left_motor_reverse(left_pwm_value);
}
/* Right motor */
if( right_motor_speed >= 0 )
{
right_pwm_value = 1.25*right_motor_speed; // (125*left_motor_speed/100)
right_motor_forward(right_pwm_value);
}
else
{
right_motor_speed = -right_motor_speed;
right_pwm_value = 1.25*right_motor_speed; // (125*left_motor_speed/100)
right_motor_reverse(right_pwm_value);
}
}
|