Block updates follow blog post (#905)

* fix battery block comment

* update run phase blocks

* some more docs
This commit is contained in:
Peli de Halleux
2019-09-06 06:22:12 -07:00
committed by GitHub
parent 9956bb06fb
commit def648a98b
7 changed files with 94 additions and 79 deletions

View File

@ -1,6 +1,6 @@
const enum BatteryProperty {
//% level (%)
//% block="level (%)"
Level,
//% block="current (I)"
Current,

View File

@ -36,6 +36,13 @@ enum MoveUnit {
MilliSeconds
}
enum MovePhase {
//% block="acceleration"
Acceleration,
//% block="deceleration"
Deceleration
}
namespace motors {
let pwmMM: MMap
let motorMM: MMap
@ -226,6 +233,7 @@ namespace motors {
//% weight=1 blockGap=8
//% group="Properties"
//% millis.defl=200 millis.min=0 millis.max=500
//% help=motors/motor/set-brake-settle-time
setBrakeSettleTime(millis: number) {
this.init();
// ensure in [0,500]
@ -388,50 +396,41 @@ namespace motors {
* Specifies the amount of rotation or time for the acceleration
* of run commands.
*/
//% blockId=outputMotorsetRunAcceleration block="set %motor|run acceleration ramp to $value||$unit"
//% blockId=outputMotorsetRunRamp block="set %motor|run %ramp to $value||$unit"
//% motor.fieldEditor="motors"
//% weight=21 blockGap=8
//% group="Properties"
//% help=motors/motor/set-run-acceleration-ramp
setRunAccelerationRamp(value: number, unit: MoveUnit = MoveUnit.MilliSeconds) {
//% help=motors/motor/set-run-phase
setRunPhase(phase: MovePhase, value: number, unit: MoveUnit = MoveUnit.MilliSeconds) {
let temp: number;
switch (unit) {
case MoveUnit.Rotations:
this._accelerationSteps = Math.max(0, (value * 360) | 0);
temp = Math.max(0, (value * 360) | 0);
if (phase == MovePhase.Acceleration)
this._accelerationSteps = temp;
else
this._decelerationSteps = temp;
break;
case MoveUnit.Degrees:
this._accelerationSteps = Math.max(0, value | 0);
temp = Math.max(0, value | 0);
if (phase == MovePhase.Acceleration)
this._accelerationSteps = temp;
else
this._decelerationSteps = temp;
break;
case MoveUnit.Seconds:
this._accelerationTime = Math.max(0, (value * 1000) | 0);
temp = Math.max(0, (value * 1000) | 0);
if (phase == MovePhase.Acceleration)
this._accelerationTime = temp;
else
this._decelerationTime = temp;
break;
case MoveUnit.MilliSeconds:
this._accelerationTime = Math.max(0, value | 0);
break;
}
}
/**
* Specifies the amount of rotation or time for the acceleration
* of run commands.
*/
//% blockId=outputMotorsetRunDeceleration block="set %motor|run deceleration ramp to $value||$unit"
//% motor.fieldEditor="motors"
//% weight=20 blockGap=8
//% group="Properties"
//% help=motors/motor/set-run-deceleration-ramp
setRunDecelerationRamp(value: number, unit: MoveUnit = MoveUnit.MilliSeconds) {
switch (unit) {
case MoveUnit.Rotations:
this._decelerationSteps = Math.max(0, (value * 360) | 0);
break;
case MoveUnit.Degrees:
this._decelerationSteps = Math.max(0, value | 0);
break;
case MoveUnit.Seconds:
this._decelerationTime = Math.max(0, (value * 1000) | 0);
break;
case MoveUnit.MilliSeconds:
this._decelerationTime = Math.max(0, value | 0);
temp = Math.max(0, value | 0);
if (phase == MovePhase.Acceleration)
this._accelerationTime = temp;
else
this._decelerationTime = temp;
break;
}
}