From 17ab24eaa903bfda517656f625338d5ce8a4ce0f Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Wed, 4 Sep 2019 14:51:45 -0700 Subject: [PATCH] Ramp (#904) * updated ramp block * updated example --- .../motors/motor/{schedule.md => ramp.md} | 6 +++--- libs/core/output.ts | 18 ++++++++++-------- 2 files changed, 13 insertions(+), 11 deletions(-) rename docs/reference/motors/motor/{schedule.md => ramp.md} (91%) diff --git a/docs/reference/motors/motor/schedule.md b/docs/reference/motors/motor/ramp.md similarity index 91% rename from docs/reference/motors/motor/schedule.md rename to docs/reference/motors/motor/ramp.md index c1d5520e..556c16aa 100644 --- a/docs/reference/motors/motor/schedule.md +++ b/docs/reference/motors/motor/ramp.md @@ -1,9 +1,9 @@ -# Schedule +# Ramp Schedules an acceleration, constant and deceleration phase at a given speed. ```sig -motors.largeA.schedule(50, 100, 500, 100) +motors.largeA.ramp(50, 100, 500, 100) ``` The speed setting is a percentage of the motor's full speed. Full speed is the speed that the motor runs when the brick supplies maximum output voltage to the port. @@ -30,7 +30,7 @@ brick.buttonLeft.onEvent(ButtonEvent.Pressed, function () { acc += -100 }) brick.buttonEnter.onEvent(ButtonEvent.Pressed, function () { - motors.largeB.schedule(50, acc, steady, dec, MoveUnit.MilliSeconds) + motors.largeB.ramp(50, steady, MoveUnit.MilliSeconds, acc, dec) }) brick.buttonRight.onEvent(ButtonEvent.Pressed, function () { acc += 100 diff --git a/libs/core/output.ts b/libs/core/output.ts index 4552ac61..6a1ec461 100644 --- a/libs/core/output.ts +++ b/libs/core/output.ts @@ -279,7 +279,7 @@ namespace motors { const r: MoveSchedule = { speed: Math.clamp(-100, 100, speed >> 0), useSteps: true, - steps: [step1, step2, step3] + steps: [step1 || 0, step2 || 0, step3 || 0] } let scale = 1; switch (unit) { @@ -352,18 +352,20 @@ namespace motors { /** * Schedules a run of the motor with an acceleration, constant and deceleration phase. * @param speed the speed from ``100`` full forward to ``-100`` full backward, eg: 50 - * @param acceleration acceleration phase measured distance or rotation - * @param value measured distance or rotation - * @param deceleration deceleration phase measured distance or rotation - * @param unit (optional) unit of the value + * @param value measured distance or rotation, eg: 500 + * @param unit (optional) unit of the value, eg: MoveUnit.MilliSeconds + * @param acceleration acceleration phase measured distance or rotation, eg: 500 + * @param deceleration deceleration phase measured distance or rotation, eg: 500 */ - //% blockId=motorSchedule block="schedule %motor at %speed=motorSpeedPicker|\\%|for %acceleration|%value|%deceleration||%unit" + //% blockId=motorSchedule block="ramp %motor at %speed=motorSpeedPicker|\\%|for %value|%unit||accelerate %acceleration|decelerate %deceleration" //% weight=99 blockGap=8 //% group="Move" //% motor.fieldEditor="motors" - //% help=motors/motor/schedule + //% help=motors/motor/ramp //% inlineInputMode=inline - schedule(speed: number, acceleration: number, value: number, deceleration: number, unit: MoveUnit = MoveUnit.MilliSeconds) { + //% expandableArgumentMode=toggle + //% value.defl=500 + ramp(speed: number, value: number = 500, unit: MoveUnit = MoveUnit.MilliSeconds, acceleration?: number, deceleration?: number) { this.init(); const schedule = this.normalizeSchedule(speed, acceleration, value, deceleration, unit); // stop if speed is 0