pxt-ev3/docs/coding/cruise-control.md

1.4 KiB

Cruise Control

Learn how to set and adjust motor speeds.

Activity 1

Increase motor speed when touch sensor 1 is pressed.

let speed = 0;
sensors.touch1.onEvent(ButtonEvent.Pressed, function () {
    if (speed < 100)
        speed = speed + 10;
    motors.largeBC.run(speed);
}) 

Activity 2

Add a "reduce" motor speed action when touch sensor 2 is pressed.

let speed = 0;
sensors.touch1.onEvent(ButtonEvent.Pressed, function () {
    if (speed < 100)
        speed = speed + 10;
    motors.largeBC.run(speed);
}) 
sensors.touch2.onEvent(ButtonEvent.Pressed, function () {
    if (speed > -100)
        speed = speed - 10;
    motors.largeBC.run(speed);
}) 

Activity 3

Refactor your code by moving the speed increase and speed decrease code into ||functions:accelerate|| and ||functions:decelerate|| functions. Run the motors at the new speed in an ||functions:update|| function.

let speed = 0
function decelerate() {
    if (speed > -100) {
        speed = speed - 10
    }
}
function accelerate() {
    if (speed < 100) {
        speed = speed + 10
    }
}
function update() {
    brick.clearScreen()
    brick.showString("speed: " + speed, 1)
    motors.largeBC.run(speed)
}
sensors.touch2.onEvent(ButtonEvent.Pressed, function () {
    accelerate()
    update()
})
sensors.touch1.onEvent(ButtonEvent.Pressed, function () {
    decelerate()
    update()
})