方法
control_motor_running(port,mode,parameter,left_speed,right_speed)
port可取thunbot.PORT_L、thunbot.PORT_R、thunbot.PORT_L_R 如下表: | mode的取值 | parameter | left_speed取值范围 | right_speed取值范围 | | :—- | :—- | :—- | :—- | | DEFAULT_MODE | 默认模式,参数忽略 | -100~100 | -100~100 | | CONTROL_TIME_MODE | 运行的时间 | -100~100 | -100~100 | | CONTROL_ANGLE_MODE | 转动的角度 | -100~100 | -100~100 | | CONTROL_TURNS_MODE | 转动的圈数 | -100~100 | -100~100 |motor_control_motor_turnning(mode,parameter,direction,speed)
如下表: | mode的取值 | parameter | direction取值范围 | speed取值范围 | | :—- | :—- | :—- | :—- | | DEFAULT_MODE | 默认模式,参数忽略 | -100~100 | -100~100 | | CONTROL_TIME_MODE | 运行的时间 | -100~100 | -100~100 | | CONTROL_ANGLE_MODE | 转动的角度 | -100~100 | -100~100 | | CONTROL_TURNS_MODE | 转动的圈数 | -100~100 | -100~100 |
注:此函数运行一个电机,另一个电机会根据direction值产生联动
brake(port)
port可取thunbot.PORT_L、thunbot.PORT_R 电机刹车。free(port)
port可取thunbot.PORT_L、thunbot.PORT_R 电机惯性停止。get_rotate_angle(port)
port可取thunbot.PORT_L、thunbot.PORT_R 获取电机旋转的角度。clear_rotate_value(port)
port可取thunbot.PORT_L、thunbot.PORT_R 复位旋转角度,重新开始计算电机旋转角度。get_speed(port,number)
port可取thunbot.PORT_L、thunbot.PORT_R 获取电机转速,number 设置取样次数,根据多次取样计算平均值,一般设置为 10 。
编程示范
from thunbot import motor
import thunbot
import time
# control_motor_running 函数默认模式测试
for i in range(-100,100):
motor.control_motor_running(thunbot.PORT_L_R,motor.DEFAULT_MODE,0,i,-i)
print("motor_l speed:",motor.get_speed(thunbot.PORT_L,10),"angle:",motor.get_rotate_angle(thunbot.PORT_L))
print("motor_r speed:",motor.get_speed(thunbot.PORT_R,10),"angle:",motor.get_rotate_angle(thunbot.PORT_R))
time.sleep_ms(100)
# 刹车测试
print("motor_l brake")
print("motor_r free")
motor.brake(thunbot.PORT_L)
motor.free(thunbot.PORT_R)
time.sleep(5)
# control_motor_running 函数控制时间测试
# motor_l运动3s motor_r运动6s
start_time = time.ticks_ms()
motor.control_motor_running(thunbot.PORT_L,motor.CONTROL_TIME_MODE,3,20,0)
print("motor_l run time(3000ms):",(time.ticks_ms() - start_time)) # 3000ms
motor.control_motor_running(thunbot.PORT_R,motor.CONTROL_TIME_MODE,3,0,20)
print("motor_r run time(6000ms):",(time.ticks_ms() - start_time)) # 6000ms
time.sleep(5)
# control_motor_running 函数控制角度测试
start_angle = motor.get_rotate_angle(thunbot.PORT_L)
motor.control_motor_running(thunbot.PORT_L,motor.CONTROL_ANGLE_MODE,180,20,0)
print("motor_l run angle(180`):",abs(motor.get_rotate_angle(thunbot.PORT_L) - start_angle))
start_angle = motor.get_rotate_angle(thunbot.PORT_R)
motor.control_motor_running(thunbot.PORT_R,motor.CONTROL_ANGLE_MODE,180,0,20)
print("motor_r run angle(180`):",abs(motor.get_rotate_angle(thunbot.PORT_R) - start_angle))
time.sleep(5)
# control_motor_running 函数控制圈数测试
start_angle = motor.get_rotate_angle(thunbot.PORT_L)
motor.control_motor_running(thunbot.PORT_L,motor.CONTROL_TURNS_MODE,1,20,0)
print("motor_l run angle(360`):",abs(motor.get_rotate_angle(thunbot.PORT_L) - start_angle))
start_angle = motor.get_rotate_angle(thunbot.PORT_R)
motor.control_motor_running(thunbot.PORT_R,motor.CONTROL_TURNS_MODE,1,0,20)
print("motor_r run angle(360`):",abs(motor.get_rotate_angle(thunbot.PORT_R) - start_angle))
time.sleep(5)
# motor_control_motor_turnning 默认模式测试
motor.control_motor_turnning(motor.DEFAULT_MODE,0,0,30)
for i in range(0,100):
print("motor_l speed:",motor.get_speed(thunbot.PORT_L,10),"angle:",motor.get_rotate_angle(thunbot.PORT_L))
print("motor_r speed:",motor.get_speed(thunbot.PORT_R,10),"angle:",motor.get_rotate_angle(thunbot.PORT_R))
time.sleep_ms(100)
# motor_control_motor_turnning 控制时间测试
start_time = time.ticks_ms()
motor.control_motor_turnning(motor.CONTROL_TIME_MODE,10,0,-30)
print("motor_l run time(10000ms):",(time.ticks_ms() - start_time))
time.sleep_ms(2000)
# motor_control_motor_turnning 控制角度测试
start_angle = motor.get_rotate_angle(thunbot.PORT_L)
motor.control_motor_turnning(motor.CONTROL_ANGLE_MODE,180,0,-30)
print("motor_l run angle(180`):",abs(motor.get_rotate_angle(thunbot.PORT_L) - start_angle))
time.sleep_ms(3000)
# motor_control_motor_turnning 控制圈数测试
start_angle = motor.get_rotate_angle(thunbot.PORT_L)
motor.control_motor_turnning(motor.CONTROL_TURNS_MODE,1,0,-30)
print("motor_l run angle(360`):",abs(motor.get_rotate_angle(thunbot.PORT_L) - start_angle))
time.sleep_ms(3000)
motor.control_motor_turnning(motor.DEFAULT_MODE,0,0,100)
time.sleep_ms(3000)
motor.free(thunbot.PORT_L)
motor.brake(thunbot.PORT_R)
time.sleep(5)
# motor_control_motor_turnning 控制角度测试
start_angle = motor.get_rotate_angle(thunbot.PORT_L)
motor.control_motor_turnning(motor.DEFAULT_MODE,0,100,-30)
while True:
print("motor_l speed:",motor.get_speed(thunbot.PORT_L,10),"postion:",motor.get_rotate_value(thunbot.PORT_L),"angle:",motor.get_rotate_angle(thunbot.PORT_L))
print("motor_r speed:",motor.get_speed(thunbot.PORT_R,10),"postion:",motor.get_rotate_value(thunbot.PORT_R),"angle:",motor.get_rotate_angle(thunbot.PORT_R))
time.sleep_ms(100)