Mindstorms EV3(MicroPython)Motor.run()无法运行问题求助
问题原因与解决办法
- 核心问题:你把
LeftWheel和RightWheel加入DriveBase(即Robot对象)后,DriveBase会接管这两个电机的控制权,后台持续维护电机状态。直接调用LeftWheel.run(1000)时,DriveBase的控制逻辑会立刻覆盖这条指令,导致电机无法正常运转。 - 为什么
run_time能正常工作?run_time()是阻塞式方法,执行期间会独占电机控制权,DriveBase的后台逻辑暂时无法干预,直到指定的5秒运行时间结束,所以电机能正常转动。
两种可行解决思路
- 若要单独控制单个电机,不要将其加入DriveBase。如果必须使用DriveBase,建议分开初始化:需要单独控制的电机不要传入DriveBase的构造参数。
- 若要通过DriveBase实现单侧电机运转,可使用
DriveBase.drive()方法,比如让左轮转动、右轮停止:
Robot.drive(0, 100) # 第一个参数为前进速度,第二个为转向速度,此设置可实现左轮单独转动
另外补充:你的原代码执行LeftWheel.run(1000)后程序直接结束,EV3会在程序结束时停止所有电机。而run_time()是阻塞执行的,程序会等它运行完才结束,所以电机能转够5秒。如果一定要用run(),可以在后面添加wait()让程序保持运行:
LeftWheel.run(1000) wait(5000) # 等待5秒后再结束程序
但这种方法仍可能被DriveBase的后台控制干扰,优先推荐前两种思路。
内容的提问来源于stack exchange,提问作者DylDev
相关产品推荐
相关产品推荐

