From 7273354944b4f2b4d05f133de5bf68d9e0b6c907 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Fri, 20 May 2016 05:39:44 -0700 Subject: [PATCH] support for 3g/6g gestures --- libs/microbit/enums.d.ts | 10 ++++++++++ libs/microbit/input.cpp | 16 +++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/libs/microbit/enums.d.ts b/libs/microbit/enums.d.ts index 731ace17..c24c9e32 100644 --- a/libs/microbit/enums.d.ts +++ b/libs/microbit/enums.d.ts @@ -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 { } diff --git a/libs/microbit/input.cpp b/libs/microbit/input.cpp index b4148079..efdbc312 100644 --- a/libs/microbit/input.cpp +++ b/libs/microbit/input.cpp @@ -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); }