Calibrate compass (#392)

* adding 'calibrate-compass' function

* fixing simulator.

* updated docs

* fixing compat test suite with 'calibrate()' function
This commit is contained in:
Peli de Halleux 2017-04-25 10:46:25 -07:00 committed by GitHub
parent a6ec23b76f
commit bd895f43ba
12 changed files with 68 additions and 14 deletions

View File

@ -22,7 +22,6 @@ input.rotation(Rotation.Pitch);
input.magneticForce(Dimension.X); input.magneticForce(Dimension.X);
input.runningTime(); input.runningTime();
input.setAccelerometerRange(AcceleratorRange.OneG); input.setAccelerometerRange(AcceleratorRange.OneG);
input.calibrate();
input.onLogoDown(() => { input.onLogoDown(() => {
}); });
@ -42,4 +41,4 @@ input.onShake(() => {
### See Also ### See Also
[onButtonPressed](/reference/input/on-button-pressed), [onGesture](/reference/input/on-gesture), [onPinPressed](/reference/input/on-pin-pressed), [buttonIsPressed](/reference/input/button-is-pressed), [compassHeading](/reference/input/compass-heading), [pinIsPressed](/reference/input/pin-is-pressed), [temperature](/reference/input/temperature), [acceleration](/reference/input/acceleration), [lightLevel](/reference/input/light-level), [rotation](/reference/input/rotation), [magneticForce](/reference/input/magnetic-force), [runningTime](/reference/input/running-time), [setAccelerometerRange](/reference/input/set-accelerometer-range) [onButtonPressed](/reference/input/on-button-pressed), [onGesture](/reference/input/on-gesture), [onPinPressed](/reference/input/on-pin-pressed), [buttonIsPressed](/reference/input/button-is-pressed), [compassHeading](/reference/input/compass-heading), [pinIsPressed](/reference/input/pin-is-pressed), [temperature](/reference/input/temperature), [acceleration](/reference/input/acceleration), [lightLevel](/reference/input/light-level), [rotation](/reference/input/rotation), [magneticForce](/reference/input/magnetic-force), [runningTime](/reference/input/running-time), [setAccelerometerRange](/reference/input/set-accelerometer-range), [calibrate-compass](/reference/input/calibrate-compass)

View File

@ -0,0 +1,29 @@
# Calibrate Compass
Runs the compass calibration sequence.
```sig
input.calibrateCompass();
```
### Calibration
The calibration will ask you to draw a circle by tilting the
@boardname@.
If you are calibrating or using the compass near metal, it might
confuse the @boardname@.
### Example
This example runs the calibration when the user presses **A+B** buttons.
```blocks
input.onButtonPressed(Button.AB, () => {
input.calibrateCompass();
})
```
### See also
[compassHeading](/reference/input/compass-heading)

View File

@ -52,13 +52,25 @@ basic.forever(() => {
### Calibration ### Calibration
Every time you start to use the compass (for example, if you have just Every time you start to use the compass (for example, if you have just
turned the @boardname@ on), the @boardname@ will start to **calibrate** turned the @boardname@ on), the @boardname@ will start to [calibrateCompass](/reference/input/calibrate-compass)
(adjust itself). It will ask you to draw a circle by tilting the (adjust itself). It will ask you to draw a circle by tilting the
@boardname@. @boardname@.
If you are calibrating or using the compass near metal, it might If you are calibrating or using the compass near metal, it might
confuse the @boardname@. confuse the @boardname@.
### ~ hint
Keep the calibration handy by running it when the user pressed **A+B**.
```block
input.onButtonPressed(Button.AB, () => {
input.calibrateCompass();
})
```
### ~
### See also ### See also
[acceleration](/reference/input/acceleration) [acceleration](/reference/input/acceleration), [calibrateCompass](/reference/input/calibrate-compass)

View File

@ -10,8 +10,6 @@ music.beat(BeatFraction.Whole);
music.tempo(); music.tempo();
music.changeTempoBy(20); music.changeTempoBy(20);
music.setTempo(120); music.setTempo(120);
music.onEvent(MusicEvent.MelodyNotePlayed, () => {});
music.setPlayTone((freq, ms) => {});
``` ```
### See Also ### See Also

View File

@ -4,7 +4,7 @@ Replaces the implementation of the [music play tone](/reference/music/play-tone)
```sig ```sig
music.setPlayTone((freq, ms) => {}) music.setPlayTone((frequency: number, duration: number) => {})
``` ```
### Parameters ### Parameters

View File

@ -99,7 +99,8 @@
"input.acceleration|param|dimension": "TODO", "input.acceleration|param|dimension": "TODO",
"input.buttonIsPressed": "Get the button state (pressed or not) for ``A`` and ``B``.", "input.buttonIsPressed": "Get the button state (pressed or not) for ``A`` and ``B``.",
"input.buttonIsPressed|param|button": "the button to query the request, eg: Button.A", "input.buttonIsPressed|param|button": "the button to query the request, eg: Button.A",
"input.calibrate": "Obsolete, compass calibration is automatic.", "input.calibrate": "Obsolete, use input.calibrateCompass instead.",
"input.calibrateCompass": "Obsolete, compass calibration is automatic.",
"input.compassHeading": "Get the current compass heading in degrees.", "input.compassHeading": "Get the current compass heading in degrees.",
"input.lightLevel": "Reads the light level applied to the LED screen in a range from ``0`` (dark) to ``255`` bright.", "input.lightLevel": "Reads the light level applied to the LED screen in a range from ``0`` (dark) to ``255`` bright.",
"input.magneticForce": "Get the magnetic force value in ``micro-Teslas`` (``µT``). This function is not supported in the simulator.", "input.magneticForce": "Get the magnetic force value in ``micro-Teslas`` (``µT``). This function is not supported in the simulator.",

View File

@ -220,6 +220,7 @@
"images|block": "images", "images|block": "images",
"input.acceleration|block": "acceleration (mg)|%NAME", "input.acceleration|block": "acceleration (mg)|%NAME",
"input.buttonIsPressed|block": "button|%NAME|is pressed", "input.buttonIsPressed|block": "button|%NAME|is pressed",
"input.calibrateCompass|block": "calibrate compass",
"input.compassHeading|block": "compass heading (°)", "input.compassHeading|block": "compass heading (°)",
"input.lightLevel|block": "light level", "input.lightLevel|block": "light level",
"input.magneticForce|block": "magnetic force (µT)|%NAME", "input.magneticForce|block": "magnetic force (µT)|%NAME",

View File

@ -313,8 +313,11 @@ namespace input {
/** /**
* Obsolete, compass calibration is automatic. * Obsolete, compass calibration is automatic.
*/ */
//% help=input/calibrate weight=0 //% help=input/calibrate-compass advanced=true
void calibrate() { } //% blockId="input_compass_calibrate" block="calibrate compass"
void calibrateCompass() {
uBit.compass.calibrate();
}
/** /**
* Sets the accelerometer sample range in gravities. * Sets the accelerometer sample range in gravities.

View File

@ -47,4 +47,12 @@ namespace input {
export function onLogoDown(body: Action): void { export function onLogoDown(body: Action): void {
onGesture(Gesture.LogoDown, body); onGesture(Gesture.LogoDown, body);
} }
/**
* Obsolete, use input.calibrateCompass instead.
*/
//% weight=0 help=input/calibrate-compass
export function calibrate() {
input.calibrateCompass();
}
} }

View File

@ -339,8 +339,9 @@ declare namespace input {
/** /**
* Obsolete, compass calibration is automatic. * Obsolete, compass calibration is automatic.
*/ */
//% help=input/calibrate weight=0 shim=input::calibrate //% help=input/calibrate-compass advanced=true
function calibrate(): void; //% blockId="input_compass_calibrate" block="calibrate compass" shim=input::calibrateCompass
function calibrateCompass(): void;
/** /**
* Sets the accelerometer sample range in gravities. * Sets the accelerometer sample range in gravities.

View File

@ -55,7 +55,8 @@
"type": "api", "type": "api",
"map": { "map": {
"bluetooth\\s*\\.uartRead\\s*\\((.*?)\\)": "bluetooth.uartReadUntil($1)", "bluetooth\\s*\\.uartRead\\s*\\((.*?)\\)": "bluetooth.uartReadUntil($1)",
"bluetooth\\s*\\.uartWrite\\s*\\((.*?)\\)": "bluetooth.uartWriteUntil($1)" "bluetooth\\s*\\.uartWrite\\s*\\((.*?)\\)": "bluetooth.uartWriteUntil($1)",
"input\\s*\\.calibrate\\s*\\(": "input.calibrateCompass("
} }
}, },
{ {

View File

@ -78,7 +78,8 @@ namespace pxsim.input {
return runtime.runningTime(); return runtime.runningTime();
} }
export function calibrate() { export function calibrateCompass() {
// device calibrates...
} }
} }