support for 3g/6g gestures

This commit is contained in:
Peli de Halleux 2016-05-20 05:39:44 -07:00
parent 9c96591edd
commit 7273354944
2 changed files with 25 additions and 1 deletions

View File

@ -105,6 +105,16 @@ declare namespace basic {
*/
//% block="free fall"
FreeFall = 7, // MICROBIT_ACCELEROMETER_EVT_FREEFALL
/**
* Raised when a 3G shock is detected
*/
//% block="3g"
ThreeG = 8, // MICROBIT_ACCELEROMETER_EVT_3G
/**
* Raised when a 6G shock is detected
*/
//% block="6g"
SixG = 9, // MICROBIT_ACCELEROMETER_EVT_6G
}
declare namespace input {
}

View File

@ -94,7 +94,17 @@ enum class Gesture {
* Raised when the board is falling!
*/
//% block="free fall"
FreeFall = MICROBIT_ACCELEROMETER_EVT_FREEFALL
FreeFall = MICROBIT_ACCELEROMETER_EVT_FREEFALL,
/**
* Raised when a 3G shock is detected
*/
//% block="3g"
ThreeG = MICROBIT_ACCELEROMETER_EVT_3G,
/**
* Raised when a 6G shock is detected
*/
//% block="6g"
SixG = MICROBIT_ACCELEROMETER_EVT_6G
};
//% color=300 weight=99
@ -117,6 +127,10 @@ namespace input {
//% help=input/on-gesture weight=84 blockGap=8
//% blockId=device_gesture_event block="on |%NAME" icon="\uf135"
void onGesture(Gesture gesture, Action body) {
if ((int)gesture == MICROBIT_ACCELEROMETER_EVT_3G && uBit.accelerometer.getRange() < 3)
uBit.accelerometer.setRange(4);
else if ((int)gesture == MICROBIT_ACCELEROMETER_EVT_6G && uBit.accelerometer.getRange() < 6)
uBit.accelerometer.setRange(8);
registerWithDal(MICROBIT_ID_GESTURE, (int)gesture, body);
}