首页全部课程综合进阶第 10 课
10

转左转右

编写精确转弯子程序

子程序变量条件循环绝对值运算指南针传感器电机控制

课程概述

本节课将目标角的概念付诸实践,编写"转左"和"转右"两个子程序,使用绝对值运算和条件循环实现精确的转弯控制。

转左子程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 转左子程序
PROCEDURE TurnLeft
    // 条件循环:当前角度与目标角差值大于10度时继续转
    WHILE abs(目标角 - 指南针读数) > 10 DO
        // 左侧电机反转,右侧电机正转
        Motor_Left.Reverse(speed=25)
        Motor_Right.Forward(speed=25)
    END WHILE

    // 停止所有电机
    StopAllMotors()

    // 等待100毫秒稳定
    Wait(100ms)
END PROCEDURE

转右子程序

1
2
3
4
5
6
7
8
9
10
11
// 转右子程序
PROCEDURE TurnRight
    WHILE abs(目标角 - 指南针读数) > 10 DO
        // 右侧电机反转,左侧电机正转
        Motor_Right.Reverse(speed=25)
        Motor_Left.Forward(speed=25)
    END WHILE

    StopAllMotors()
    Wait(100ms)
END PROCEDURE

关键参数

参数说明
循环条件abs(目标角-指南针) > 10差值小于10度时提前停止
转弯速度25低速保证精确性
延时100ms稳定车身

为什么提前10度停止?

由于电机有惯性,如果等到完全到达目标角才停止,机器人会因为惯性而超过目标角度。提前10度停止,利用惯性正好转到目标位置。这个值需要根据实际情况微调。

课后练习

测试一下你对本课内容的掌握程度

第 1 / 2 题

转弯时的电机速度设为多少?