Threshold api docs - 01 (#336)

* Local commit

* Throw on more topics

* Throw in threshold topics for infrared
This commit is contained in:
Galen Nickel 2018-02-21 22:35:25 -08:00 committed by Peli de Halleux
parent 84c8e31ff5
commit 8cfb70c97b
11 changed files with 240 additions and 6 deletions

View File

@ -40,7 +40,7 @@ const enum ColorSensorColor {
enum LightCondition { enum LightCondition {
//% block="dark" //% block="dark"
Dark = sensors.ThresholdState.Low, Dark = sensors.ThresholdState.Low,
//$ block="bright" //% block="bright"
Bright = sensors.ThresholdState.High Bright = sensors.ThresholdState.High
} }
@ -245,6 +245,7 @@ namespace sensors {
//% group="Threshold" blockGap=8 weight=90 //% group="Threshold" blockGap=8 weight=90
//% value.min=0 value.max=100 //% value.min=0 value.max=100
//% sensor.fieldEditor="ports" //% sensor.fieldEditor="ports"
//% help=sensors/color-sensor/set-threshold
setThreshold(condition: LightCondition, value: number) { setThreshold(condition: LightCondition, value: number) {
if (condition == LightCondition.Dark) if (condition == LightCondition.Dark)
this.thresholdDetector.setLowThreshold(value) this.thresholdDetector.setLowThreshold(value)
@ -259,6 +260,7 @@ namespace sensors {
//% blockId=colorGetThreshold block="%sensor|%condition" //% blockId=colorGetThreshold block="%sensor|%condition"
//% group="Threshold" blockGap=8 weight=89 //% group="Threshold" blockGap=8 weight=89
//% sensor.fieldEditor="ports" //% sensor.fieldEditor="ports"
//% help=sensors/color-sensor/threshold
threshold(condition: LightCondition): number { threshold(condition: LightCondition): number {
return this.thresholdDetector.threshold(<ThresholdState><number>LightCondition.Dark); return this.thresholdDetector.threshold(<ThresholdState><number>LightCondition.Dark);
} }
@ -266,9 +268,10 @@ namespace sensors {
/** /**
* Collects measurement of the light condition and adjusts the threshold to 10% / 90%. * Collects measurement of the light condition and adjusts the threshold to 10% / 90%.
*/ */
//% blockId=colorCalibrateLight block="calibrate|%sensor|for %mode|light" //% blockId=colorCalibrateLight block="calibrate|%sensor|for %mode"
//% group="Threshold" weight=91 blockGap=8 //% group="Threshold" weight=91 blockGap=8
//% sensor.fieldEditor="ports" //% sensor.fieldEditor="ports"
//% help=sensors/color-sensor/calibrate-light
calibrateLight(mode: LightIntensityMode, deviation: number = 8) { calibrateLight(mode: LightIntensityMode, deviation: number = 8) {
this.calibrating = true; // prevent events this.calibrating = true; // prevent events

View File

@ -0,0 +1,26 @@
# calibrate Light
Calibrate the thresholds for dark and bright in current lighting conditions.
```sig
sensors.color1.calibrateLight(LightIntensityMode.Ambient, 0)
```
Sometimes when external lighting conditions change, the light sensor measures light intensty differently than when its thresholds were set before. You can calibrate the light sensor to adjust the thresholds slightly for current conditions. This is so that both the ``dark`` and ``bright`` threshold conditions happen with a similar amount of light to what you set the thresholds before.
## Parameters
* **mode**: the type of light threshold to calibrate. This is either ``ambient`` or ``reflected`` light.
* **deviation**: a [number](/types/number) that is the amount of light level change to adjust in a measurement.
## Example
Calibrate the ``dark`` and ``light`` thresholds for the ``color 2`` sensor using reflected light.
```blocks
sensors.color2.calibrateLight(LightIntensityMode.Reflected)
```
## See also
[set threshold](/reference/sensors/color-sensor/set-threshold)

View File

@ -12,7 +12,7 @@ The [color](/reference/sensors/color) value returned is one of the colors that t
* a color value for the current color detected by the color sensor. The colors detected are: * a color value for the current color detected by the color sensor. The colors detected are:
>* ``none`` >* ``none``: no color is detected.
>* ``blue`` >* ``blue``
>* ``green`` >* ``green``
>* ``yellow`` >* ``yellow``

View File

@ -32,4 +32,4 @@ forever(function () {
## See also ## See also
[reflected light](/reference/sensors/color-sensor/reflected-light) [calibrate light](/reference/sensors/color-sensor/calibrate-light)

View File

@ -0,0 +1,41 @@
# set Threshold
Set the threshold value for dark or bright light.
```sig
sensors.color1.setThreshold(LightCondition.Dark, 0)
```
Light intensity is measured from `0` (very dark) to `100` (very bright). You can decide what dark and bright mean for your purposes and set a _threshold_ for them. A threshold is a boundary or a limit. If you want a light intensity of `20` mean that it's dark, then you set the sensor threshold for ``dark`` to `20`. Also, if you think that `75` is bright, then you can set the threshold for ``bright`` to that.
After setting a threshold, any event for that light condition won't happen until the amount of light reaches your threshold value:
```block
sensors.color1.setThreshold(LightCondition.Dark, 20)
sensors.color1.onLightChanged(LightIntensityMode.Reflected, LightCondition.Dark, function () {
brick.showMood(moods.sleeping)
})
```
## Parameters
* **condition**: the light intensity threshold to set, ``dark`` or ``bright``.
* **value**: the value of light intensity for the threshold: `0` for very dark to `100` for very bright.
## Example
Make a daylight alarm. When the ambient light reaches `70` flash the status light and play a sound.
```blocks
sensors.color3.setThreshold(LightCondition.Bright, 70)
sensors.color3.onLightChanged(LightIntensityMode.Ambient, LightCondition.Bright, function () {
brick.setStatusLight(StatusLight.GreenFlash)
for (let i = 0; i < 5; i++) {
music.playSoundEffectUntilDone(sounds.mechanicalBackingAlert)
}
})
```
## See also
[threshold](/reference/sensors/color-sensor/threshold)

View File

@ -0,0 +1,27 @@
# threshold
Get the threshold value for dark or bright light.
```sig
sensors.color1.threshold(LightCondition.Dark)
```
Light intensity is measured from `0` (very dark) to `100` (very bright). A _threshold_ sets what dark and bright mean for your purposes. A threshold is a boundary or a limit. If a light intensity of `20` means that it's dark, then the sensor threshold for ``dark`` is `20`. Also, if `75` means bright, then the threshold value for ``bright`` is `75`.
## Returns
* a [number](/types/number) that is the amount of light set for the threshold. No light (darkness) is `0` and the brightest light is `100`.
## Example
Find out what light level is set as the ``dark`` threshold when a dark light event happens.
```blocks
sensors.color3.onLightChanged(LightIntensityMode.Reflected, LightCondition.Dark, function () {
brick.showValue("DarknessThresholdValue", sensors.color3.threshold(LightCondition.Dark), 1)
})
```
## See also
[set threshold](/reference/sensors/color-sensor/set-threshold)

View File

@ -12,7 +12,6 @@ Since the color sensor can accurately detect some basic colors, you can't just t
* **color**: a color to match with a detectable color. The colors to choose from are: * **color**: a color to match with a detectable color. The colors to choose from are:
>* ``none``
>* ``blue`` >* ``blue``
>* ``green`` >* ``green``
>* ``yellow`` >* ``yellow``
@ -24,7 +23,6 @@ Since the color sensor can accurately detect some basic colors, you can't just t
* a color value that the color sensor can detect. The detectable colors are: * a color value that the color sensor can detect. The detectable colors are:
>* ``none``
>* ``blue`` >* ``blue``
>* ``green`` >* ``green``
>* ``yellow`` >* ``yellow``

View File

@ -0,0 +1,32 @@
# proximity Threshold
Get the proximity threshold for when objects are near and detected.
```sig
sensors.infraredSensor1.proximityThreshold(InfraredSensorEvent.ObjectNear)
```
Infrared sensors determine proximity of an object by measuring the intensity of the infrared light reflected from it. The proximity range of measurment is from `0` to `100`. Proximity _thresholds_ use a value in this range to decide when a proximity event should happen for a detected object.
## Parameters
* **condition**: the proximity threshold to return a value for. These are: ``near`` and ``detected``.
## Returns
* a [number](/types/number) that is the proximity value for the threshold. This is a number between `0` and `100`.
## Example
When an object with near proximity is detected, show what the threshold is.
```blocks
sensors.infraredSensor1.onEvent(InfraredSensorEvent.ObjectNear, function () {
brick.showValue("NearObjectThreshold", sensors.infraredSensor1.proximityThreshold(InfraredSensorEvent.ObjectNear)
, 1)
})
```
## See also
[set proximity threshold](/reference/sensors/infrared/set-proximity-threshold)

View File

@ -0,0 +1,35 @@
# set Proximity Threshold
Set the proximity threshold for when objects are near or detected.
```sig
sensors.infraredSensor1.setPromixityThreshold(InfraredSensorEvent.ObjectNear, 0)
```
Infrared sensors determine proximity of an object by measuring the intensity of the infrared light reflected from it. The proximity range of measurment is from `0` to `100`. You can decide what value in that range you want mean that something is near or that something was detected.
If you want a proximity value of `32` to mean that a detected object is near, then the ``near`` threshold is set to that value. If you want any object within a proximity of `95` to cause a detection event, then the ``detected`` threshold is set to `95`.
## Parameters
* **condition**: the threshold condition to use this proximity. These are: ``near`` and ``detected``.
* **value**: a proximity [number](/types/number) to set the threshold for.
## Example
Set a threshold for detecting something moving within a proximity `30`. Wait for an object to show up. When it does, flash the status light and make noise as an alarm.
```blocks
sensors.infraredSensor1.setPromixityThreshold(InfraredSensorEvent.ObjectDetected, 30)
sensors.infraredSensor1.pauseUntil(InfraredSensorEvent.ObjectDetected)
brick.clearScreen()
brick.showString("Perimeter Breach!!!", 3)
brick.setStatusLight(StatusLight.RedFlash)
for (let i = 0; i < 10; i++) {
music.playSoundEffectUntilDone(sounds.mechanicalHorn2)
}
```
## See also
[proximity threshold](/reference/sensors/infrared/proximity-threshold)

View File

@ -0,0 +1,37 @@
# set Threshold
Set the distance threshold for when objects are near, far, or detected.
```sig
sensors.ultrasonic1.setThreshold(UltrasonicSensorEvent.ObjectDetected, 0)
```
Whether something is near or far away really depends on the situation. A object moving towards you is "near" at further distance than something that isn't moving due to the time necessary to move out of its way. So, in certain situations you may want change which distances mean near or far.
You can change the distances for near and far by setting their _thresholds_. A threshold is a boundary or a limit. If you wanted near to mean anything that's closer that 20 centimeters, then that is your threshold for ``near``. Also, if anything further than 35 centimeters is thought of as far, then the threshold for ``far`` is `35`.
Similarly, if you are just concerned about knowing that something has moved within a distance from you, then you set that distance as the threshold for ``detected``.
## Parameters
* **condition**: the threshold condition to set a distance for. These are: ``near``, ``far``, and ``detected``.
* **value**: a [number](/types/number) that the distance in centimeters to set the threshold for.
## Example
Set a threshold for detecting something moving within 30 centimeters. Wait for an object to show up. When it does, flash the status light and make noise as an alarm.
```blocks
sensors.ultrasonic1.setThreshold(UltrasonicSensorEvent.ObjectDetected, 30)
sensors.ultrasonic1.pauseUntil(UltrasonicSensorEvent.ObjectDetected)
brick.clearScreen()
brick.showString("Perimeter Breach!!!", 3)
brick.setStatusLight(StatusLight.RedFlash)
for (let i = 0; i < 10; i++) {
music.playSoundEffectUntilDone(sounds.mechanicalHorn2)
}
```
## See also
[threshold](/reference/sensors/ultrasonic/threshold)

View File

@ -0,0 +1,35 @@
# threshold
Get the distance threshold for when objects are near, far, or detected.
```sig
sensors.ultrasonic1.threshold(UltrasonicSensorEvent.ObjectDetected)
```
Whether something is near or far away really depends on the situation. A object moving towards you is "near" at further distance than something that isn't moving due to the time necessary to move out of its way.
Distances for near and far by have set _thresholds_. A threshold is a boundary or a limit. If near means anything that's closer that 20 centimeters, then the threshold for ``near``. Also, if anything further than 35 centimeters is thought of as far, then the threshold for ``far`` is `35`.
Also, the threshold for nowing that something has moved within a distance from you is set for ``detected``.
## Parameters
* **condition**: the condition to get the threshold distance for. These are: ``near``, ``far``, and ``detected``.
## Returns
* a [number](/types/number) that is the threshold distance in centimeters.
## Example
When a near object is detected, show what the threshold is.
```blocks
sensors.ultrasonic4.onEvent(UltrasonicSensorEvent.ObjectNear, function () {
brick.showValue("NearObjectThreshold", sensors.ultrasonic4.threshold(UltrasonicSensorEvent.ObjectNear), 1)
})
```
## See also
[set threshold](/reference/sensors/ultrasonic/set-threshold)