From 3d8c697586e6a37da7534ba8f4ee377fca86bbfb Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Thu, 30 Nov 2017 09:38:04 -0800 Subject: [PATCH] moving into separate project --- .../_locales/color-sensor-strings.json | 8 ++--- libs/color-sensor/color.ts | 8 ++--- .../docs/reference/sensors/color-sensor.md | 8 ++--- .../sensors/color-sensor/ambient-light.md | 2 +- .../reference/sensors/color-sensor/color.md | 2 +- .../sensors/color-sensor/on-color-detected.md | 4 +-- .../sensors/color-sensor/reflected-light.md | 2 +- libs/core/_locales/core-jsdoc-strings.json | 6 +--- libs/core/_locales/core-strings.json | 14 ++------ libs/core/ir.ts | 6 ++-- libs/core/pxt.json | 1 - libs/ev3/pxt.json | 3 +- libs/ultrasonic-sensor/README.md | 3 ++ .../ultrasonic-sensor-jsdoc-strings.json | 6 ++++ .../_locales/ultrasonic-sensor-strings.json | 13 +++++++ libs/ultrasonic-sensor/pxt.json | 15 ++++++++ libs/ultrasonic-sensor/test.ts | 0 .../{core => ultrasonic-sensor}/ultrasonic.ts | 34 +++++++++---------- pxtarget.json | 1 + 19 files changed, 79 insertions(+), 57 deletions(-) create mode 100644 libs/ultrasonic-sensor/README.md create mode 100644 libs/ultrasonic-sensor/_locales/ultrasonic-sensor-jsdoc-strings.json create mode 100644 libs/ultrasonic-sensor/_locales/ultrasonic-sensor-strings.json create mode 100644 libs/ultrasonic-sensor/pxt.json create mode 100644 libs/ultrasonic-sensor/test.ts rename libs/{core => ultrasonic-sensor}/ultrasonic.ts (77%) diff --git a/libs/color-sensor/_locales/color-sensor-strings.json b/libs/color-sensor/_locales/color-sensor-strings.json index 3211eddc..bfa0eca8 100644 --- a/libs/color-sensor/_locales/color-sensor-strings.json +++ b/libs/color-sensor/_locales/color-sensor-strings.json @@ -17,10 +17,10 @@ "sensors.ColorSensor.light|block": "`icons.colorSensor` %color|%mode", "sensors.ColorSensor.onColorDetected|block": "on `icons.colorSensor` %sensor|detected color %color", "sensors.ColorSensor.onLightChanged|block": "on `icons.colorSensor` %sensor|%mode|%condition", - "sensors.colorSensor1|block": "1", - "sensors.colorSensor2|block": "2", - "sensors.colorSensor3|block": "3", - "sensors.colorSensor4|block": "4", + "sensors.color1|block": "1", + "sensors.color2|block": "2", + "sensors.color3|block": "3", + "sensors.color4|block": "4", "sensors|block": "sensors", "{id:category}Sensors": "Sensors", "{id:group}Color Sensor": "Color Sensor" diff --git a/libs/color-sensor/color.ts b/libs/color-sensor/color.ts index 2db3c455..708ea066 100644 --- a/libs/color-sensor/color.ts +++ b/libs/color-sensor/color.ts @@ -172,14 +172,14 @@ namespace sensors { } //% whenUsed block="1" weight=95 fixedInstance - export const colorSensor1: ColorSensor = new ColorSensor(1) + export const color1: ColorSensor = new ColorSensor(1) //% whenUsed block="3" weight=90 fixedInstance - export const colorSensor3: ColorSensor = new ColorSensor(3) + export const color3: ColorSensor = new ColorSensor(3) //% whenUsed block="2" weight=90 fixedInstance - export const colorSensor2: ColorSensor = new ColorSensor(2) + export const color2: ColorSensor = new ColorSensor(2) //% whenUsed block="4" weight=90 fixedInstance - export const colorSensor4: ColorSensor = new ColorSensor(4) + export const color4: ColorSensor = new ColorSensor(4) } diff --git a/libs/color-sensor/docs/reference/sensors/color-sensor.md b/libs/color-sensor/docs/reference/sensors/color-sensor.md index a47b1cc9..f8298b50 100644 --- a/libs/color-sensor/docs/reference/sensors/color-sensor.md +++ b/libs/color-sensor/docs/reference/sensors/color-sensor.md @@ -1,11 +1,11 @@ # Color Sensor ```cards -sensors.colorSensor1.onColorDetected(ColorSensorColor.Blue, function () { +sensors.color1.onColorDetected(ColorSensorColor.Blue, function () { }) -sensors.colorSensor1.color(); -sensors.colorSensor1.ambientLight(); -sensors.colorSensor1.reflectedLight(); +sensors.color1.color(); +sensors.color1.ambientLight(); +sensors.color1.reflectedLight(); ``` ## See Also diff --git a/libs/color-sensor/docs/reference/sensors/color-sensor/ambient-light.md b/libs/color-sensor/docs/reference/sensors/color-sensor/ambient-light.md index 5e82ac7e..cc48c745 100644 --- a/libs/color-sensor/docs/reference/sensors/color-sensor/ambient-light.md +++ b/libs/color-sensor/docs/reference/sensors/color-sensor/ambient-light.md @@ -2,7 +2,7 @@ ```blocks loops.forever(function () { - if (sensors.colorSensor1.ambientLight() > 20) { + if (sensors.color1.ambientLight() > 20) { brick.setStatusLight(LightsPattern.Green) } else { brick.setStatusLight(LightsPattern.Orange) diff --git a/libs/color-sensor/docs/reference/sensors/color-sensor/color.md b/libs/color-sensor/docs/reference/sensors/color-sensor/color.md index 7bc8f3de..f3fe99f9 100644 --- a/libs/color-sensor/docs/reference/sensors/color-sensor/color.md +++ b/libs/color-sensor/docs/reference/sensors/color-sensor/color.md @@ -2,7 +2,7 @@ ```blocks loops.forever(function () { - if (sensors.colorSensor1.color() == ColorSensorColor.Green) { + if (sensors.color1.color() == ColorSensorColor.Green) { brick.setStatusLight(LightsPattern.Green) } else { brick.setStatusLight(LightsPattern.Orange) diff --git a/libs/color-sensor/docs/reference/sensors/color-sensor/on-color-detected.md b/libs/color-sensor/docs/reference/sensors/color-sensor/on-color-detected.md index d69e5ff5..4ded99f4 100644 --- a/libs/color-sensor/docs/reference/sensors/color-sensor/on-color-detected.md +++ b/libs/color-sensor/docs/reference/sensors/color-sensor/on-color-detected.md @@ -1,7 +1,7 @@ # On Color Detected ```sig -sensors.colorSensor1.onColorDetected(ColorSensorColor.Blue, function () { }) +sensors.color1.onColorDetected(ColorSensorColor.Blue, function () { }) ``` # Parameters @@ -10,7 +10,7 @@ sensors.colorSensor1.onColorDetected(ColorSensorColor.Blue, function () { }) ```blocks -sensors.colorSensor1.onColorDetected(ColorSensorColor.Blue, function () { +sensors.color1.onColorDetected(ColorSensorColor.Blue, function () { brick.showImage(images.expressionsSick) }) ``` diff --git a/libs/color-sensor/docs/reference/sensors/color-sensor/reflected-light.md b/libs/color-sensor/docs/reference/sensors/color-sensor/reflected-light.md index fec938b1..e772654a 100644 --- a/libs/color-sensor/docs/reference/sensors/color-sensor/reflected-light.md +++ b/libs/color-sensor/docs/reference/sensors/color-sensor/reflected-light.md @@ -2,7 +2,7 @@ ```blocks loops.forever(function () { - if (sensors.colorSensor1.reflectedLight() > 20) { + if (sensors.color1.reflectedLight() > 20) { brick.setStatusLight(LightsPattern.Green) } else { brick.setStatusLight(LightsPattern.Orange) diff --git a/libs/core/_locales/core-jsdoc-strings.json b/libs/core/_locales/core-jsdoc-strings.json index 63126edd..6f82c463 100644 --- a/libs/core/_locales/core-jsdoc-strings.json +++ b/libs/core/_locales/core-jsdoc-strings.json @@ -74,15 +74,11 @@ "sensors.InfraredSensor.on|param|handler": "the code to run when detected", "sensors.InfraredSensor.proximity": "Get the promixity measured by the infrared sensor, from ``0`` (close) to ``100`` (far)", "sensors.InfraredSensor.remoteCommand": "Get the remote commandreceived the infrared sensor.", - "sensors.InfraredSensor.wait": "Waits for the event to occur", + "sensors.InfraredSensor.waitUntil": "Waits for the event to occur", "sensors.RemoteInfraredBeaconButton.isPressed": "Check if a remote button is currently pressed or not.", "sensors.RemoteInfraredBeaconButton.onEvent": "Do something when a button or sensor is clicked, up or down", "sensors.RemoteInfraredBeaconButton.onEvent|param|body": "code to run when the event is raised", "sensors.RemoteInfraredBeaconButton.wasPressed": "See if the remote button was pressed again since the last time you checked.", - "sensors.UltraSonicSensor.distance": "Gets the distance from the sonar in millimeters", - "sensors.UltraSonicSensor.on": "Registers code to run when the given color is close", - "sensors.UltraSonicSensor.on|param|handler": "the code to run when detected", - "sensors.UltraSonicSensor.wait": "Waits for the event to occur", "sensors.remoteButtonBottomLeft": "Remote bottom-left button.", "sensors.remoteButtonBottomRight": "Remote bottom-right button.", "sensors.remoteButtonCenter": "Remote beacon (center) button.", diff --git a/libs/core/_locales/core-strings.json b/libs/core/_locales/core-strings.json index ad23c521..0f0ae8bb 100644 --- a/libs/core/_locales/core-strings.json +++ b/libs/core/_locales/core-strings.json @@ -19,8 +19,6 @@ "Output.B|block": "B", "Output.C|block": "C", "Output.D|block": "D", - "UltrasonicSensorEvent.ObjectDetected|block": "object detected", - "UltrasonicSensorEvent.ObjectNear|block": "object near", "brick.Button.isPressed|block": "`icons.brickButtons` %button|is pressed", "brick.Button.onEvent|block": "on `icons.brickButtons` %button|%event", "brick.Button.wasPressed|block": "`icons.brickButtons` %button|was pressed", @@ -63,13 +61,10 @@ "sensors.InfraredSensor.on|block": "on `icons.infraredSensor` %sensor|%event", "sensors.InfraredSensor.proximity|block": "`icons.infraredSensor` %infrared|proximity", "sensors.InfraredSensor.remoteCommand|block": "`icons.infraredSensor` %infrared|remote command", - "sensors.InfraredSensor.wait|block": "wait `icons.infraredSensor` %sensor|for %event", + "sensors.InfraredSensor.waitUntil|block": "wait `icons.infraredSensor` %sensor|until %event", "sensors.RemoteInfraredBeaconButton.isPressed|block": "`icons.infraredSensor` %button|is pressed", "sensors.RemoteInfraredBeaconButton.onEvent|block": "on `icons.infraredSensor` %button|%event", "sensors.RemoteInfraredBeaconButton.wasPressed|block": "`icons.infraredSensor` %button|was pressed", - "sensors.UltraSonicSensor.distance|block": "`icons.ultrasonicSensor` %sensor|distance", - "sensors.UltraSonicSensor.on|block": "on `icons.ultrasonicSensor` %sensor|%event", - "sensors.UltraSonicSensor.wait|block": "wait `icons.ultrasonicSensor` %sensor|for %event", "sensors.gyro1|block": "1", "sensors.gyro2|block": "2", "sensors.gyro3|block": "3", @@ -83,10 +78,6 @@ "sensors.remoteButtonCenter|block": "center", "sensors.remoteButtonTopLeft|block": "top-left", "sensors.remoteButtonTopRight|block": "top-right", - "sensors.ultrasonic1|block": "1", - "sensors.ultrasonic2|block": "2", - "sensors.ultrasonic3|block": "3", - "sensors.ultrasonic4|block": "4", "sensors|block": "sensors", "serial|block": "serial", "{id:category}Brick": "Brick", @@ -105,6 +96,5 @@ "{id:group}Light": "Light", "{id:group}Motors": "Motors", "{id:group}Remote Infrared Beacon": "Remote Infrared Beacon", - "{id:group}Screen": "Screen", - "{id:group}Ultrasonic Sensor": "Ultrasonic Sensor" + "{id:group}Screen": "Screen" } \ No newline at end of file diff --git a/libs/core/ir.ts b/libs/core/ir.ts index 0129aa0f..17e77f2f 100644 --- a/libs/core/ir.ts +++ b/libs/core/ir.ts @@ -209,14 +209,14 @@ namespace sensors { * Waits for the event to occur */ //% help=input/ultrasonic/wait - //% block="wait `icons.infraredSensor` %sensor|for %event" + //% block="wait `icons.infraredSensor` %sensor|until %event" //% blockId=infraredwait //% parts="infraredsensor" //% blockNamespace=sensors //% weight=99 blockGap=8 //% group="Infrared Sensor" - wait(event: InfraredSensorEvent) { - // TODO + waitUntil(event: InfraredSensorEvent) { + control.waitForEvent(this._id, event); } /** diff --git a/libs/core/pxt.json b/libs/core/pxt.json index de5a8fb6..250ecca5 100644 --- a/libs/core/pxt.json +++ b/libs/core/pxt.json @@ -20,7 +20,6 @@ "input.ts", "ir.ts", "gyro.ts", - "ultrasonic.ts", "shims.d.ts", "enums.d.ts", "dal.d.ts", diff --git a/libs/ev3/pxt.json b/libs/ev3/pxt.json index c99726f7..dcd28778 100644 --- a/libs/ev3/pxt.json +++ b/libs/ev3/pxt.json @@ -10,7 +10,8 @@ "core": "file:../core", "music": "file:../music", "color-sensor": "file:../color-sensor", - "touch-sensor": "file:../touch-sensor" + "touch-sensor": "file:../touch-sensor", + "ultrasonic-sensor": "file:../ultrasonic-sensor" }, "public": true } diff --git a/libs/ultrasonic-sensor/README.md b/libs/ultrasonic-sensor/README.md new file mode 100644 index 00000000..18721304 --- /dev/null +++ b/libs/ultrasonic-sensor/README.md @@ -0,0 +1,3 @@ +# Touch sensor + +The library to interact with the Touch Sensor. \ No newline at end of file diff --git a/libs/ultrasonic-sensor/_locales/ultrasonic-sensor-jsdoc-strings.json b/libs/ultrasonic-sensor/_locales/ultrasonic-sensor-jsdoc-strings.json new file mode 100644 index 00000000..3bb5fc2a --- /dev/null +++ b/libs/ultrasonic-sensor/_locales/ultrasonic-sensor-jsdoc-strings.json @@ -0,0 +1,6 @@ +{ + "sensors.UltraSonicSensor.distance": "Gets the distance from the sonar in millimeters", + "sensors.UltraSonicSensor.onEvent": "Registers code to run when the given color is close", + "sensors.UltraSonicSensor.onEvent|param|handler": "the code to run when detected", + "sensors.UltraSonicSensor.waitUntil": "Waits for the event to occur" +} \ No newline at end of file diff --git a/libs/ultrasonic-sensor/_locales/ultrasonic-sensor-strings.json b/libs/ultrasonic-sensor/_locales/ultrasonic-sensor-strings.json new file mode 100644 index 00000000..96d7a0ff --- /dev/null +++ b/libs/ultrasonic-sensor/_locales/ultrasonic-sensor-strings.json @@ -0,0 +1,13 @@ +{ + "UltrasonicSensorEvent.ObjectDetected|block": "object detected", + "UltrasonicSensorEvent.ObjectNear|block": "object near", + "sensors.UltraSonicSensor.distance|block": "`icons.ultrasonicSensor` %sensor|distance", + "sensors.UltraSonicSensor.onEvent|block": "on `icons.ultrasonicSensor` %sensor|%event", + "sensors.UltraSonicSensor.waitUntil|block": "wait `icons.ultrasonicSensor` %sensor|until %event", + "sensors.ultrasonic1|block": "1", + "sensors.ultrasonic2|block": "2", + "sensors.ultrasonic3|block": "3", + "sensors.ultrasonic4|block": "4", + "{id:category}Sensors": "Sensors", + "{id:group}Ultrasonic Sensor": "Ultrasonic Sensor" +} \ No newline at end of file diff --git a/libs/ultrasonic-sensor/pxt.json b/libs/ultrasonic-sensor/pxt.json new file mode 100644 index 00000000..f435a357 --- /dev/null +++ b/libs/ultrasonic-sensor/pxt.json @@ -0,0 +1,15 @@ +{ + "name": "ultrasonic-sensor", + "description": "Ultrasonic Sensor support", + "files": [ + "README.md", + "ultrasonic.ts" + ], + "testFiles": [ + "test.ts" + ], + "public": true, + "dependencies": { + "core": "file:../core" + } +} \ No newline at end of file diff --git a/libs/ultrasonic-sensor/test.ts b/libs/ultrasonic-sensor/test.ts new file mode 100644 index 00000000..e69de29b diff --git a/libs/core/ultrasonic.ts b/libs/ultrasonic-sensor/ultrasonic.ts similarity index 77% rename from libs/core/ultrasonic.ts rename to libs/ultrasonic-sensor/ultrasonic.ts index 069bb664..5466e366 100644 --- a/libs/core/ultrasonic.ts +++ b/libs/ultrasonic-sensor/ultrasonic.ts @@ -1,20 +1,22 @@ -const enum UltrasonicSensorEvent { - //% block="object near" - ObjectNear = 1, +enum UltrasonicSensorEvent { //% block="object detected" - ObjectDetected = 2 + ObjectDetected = 10, + //% block="object near" + ObjectNear = sensors.internal.ThresholdState.Low, + //% block="object far" + ObjectFar = sensors.internal.ThresholdState.High } namespace sensors { //% fixedInstances export class UltraSonicSensor extends internal.UartSensor { - private promixityThreshold: number; + private promixityThreshold: sensors.internal.ThresholdDetector; private movementThreshold: number; constructor(port: number) { super(port) - this.promixityThreshold = 10; + this.promixityThreshold = new sensors.internal.ThresholdDetector(this.id(), 0, 255, 10, 100); // range is 0..255cm this.movementThreshold = 1; } @@ -28,12 +30,11 @@ namespace sensors { _update(prev: number, curr: number) { // is there an object near? - if (prev >= this.promixityThreshold && curr < this.promixityThreshold) - control.raiseEvent(this._id, UltrasonicSensorEvent.ObjectNear); // TODO proper HI-LO sensor + this.promixityThreshold.setLevel(curr); // did something change? if (Math.abs(prev - curr) > this.movementThreshold) - control.raiseEvent(this._id, UltrasonicSensorEvent.ObjectDetected); // TODO debouncing + control.raiseEvent(this._id, UltrasonicSensorEvent.ObjectDetected); } /** @@ -47,25 +48,22 @@ namespace sensors { //% blockNamespace=sensors //% weight=100 blockGap=8 //% group="Ultrasonic Sensor" - on(event: UltrasonicSensorEvent, handler: () => void) { + onEvent(event: UltrasonicSensorEvent, handler: () => void) { control.onEvent(this._id, event, handler); - if (event == UltrasonicSensorEvent.ObjectNear - && this.distance() < this.promixityThreshold) - control.runInBackground(handler); } /** * Waits for the event to occur */ //% help=input/ultrasonic/wait - //% block="wait `icons.ultrasonicSensor` %sensor|for %event" + //% block="wait `icons.ultrasonicSensor` %sensor|until %event" //% blockId=ultrasonicWait //% parts="ultrasonicsensor" //% blockNamespace=sensors //% weight=99 blockGap=8 //% group="Ultrasonic Sensor" - wait(event: UltrasonicSensorEvent) { - // TODO + waitUntil(event: UltrasonicSensorEvent) { + control.waitForEvent(this._id, event); } /** @@ -79,10 +77,10 @@ namespace sensors { //% blockNamespace=sensors //% weight=65 blockGap=8 //% group="Ultrasonic Sensor" - distance() { + distance(): number { // it supposedly also has an inch mode, but we stick to cm this._setMode(0) - return this.getNumber(NumberFormat.UInt16LE, 0) & 0x0fff; + return this.getNumber(NumberFormat.UInt16LE, 0) & 0x0fff; // range is 0..255 } } diff --git a/pxtarget.json b/pxtarget.json index 7cc3ec93..cabbb4e5 100644 --- a/pxtarget.json +++ b/pxtarget.json @@ -12,6 +12,7 @@ "libs/music", "libs/color-sensor", "libs/touch-sensor", + "libs/ultrasonic-sensor", "libs/ev3" ], "simulator": {