![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Change LSM6DS3 power mode using nRF51-DK BLE.
Dependencies: BLE_API LSM6DS3 mbed nRF51822 nrf51_rtc
Diff: main.cpp
- Revision:
- 3:a43f11f5378f
- Parent:
- 2:874137e546ea
- Child:
- 4:46dd8065e05b
--- a/main.cpp Tue Jun 21 20:52:04 2016 +0000 +++ b/main.cpp Wed Jun 22 22:32:58 2016 +0000 @@ -33,8 +33,13 @@ #endif /* #if NEED_CONSOLE_OUTPUT */ BLEDevice ble; -DigitalOut led1(LED1); -DigitalOut led4(LED4); +// Status lights +DigitalOut ledAlive(LED1); +DigitalOut ledIntrG(LED3); +DigitalOut ledIntrO(LED4); +// Interrupt pin connection +InterruptIn intrGX(p14); //INT1 (Gyro & Accel Interrupt) +InterruptIn intrGXO(p13); //INT2 (Gyro & Accel Data Ready) UARTService *uartServicePtr; @@ -71,7 +76,8 @@ imu.G_ODR_1660, imu.A_ODR_6660); break; default: - DEBUG("Nothing happened\n\r"); + DEBUG("Default power\n\r"); + status = imu.begin(); break; } @@ -84,17 +90,31 @@ void periodicCallback(void) { - led1 = !led1; + ledAlive = !ledAlive; } // Interrupt signal -void flip() { - led4 = !led4; +void flip(DigitalOut led) { + led = !led; +} + +void flip3() { +// pc.printf(" ++++ Data Change Triggered!! ++++ \n\r"); + flip(ledIntrO); +} + +void flip4() { +// pc.printf(" ++++ G/X Triggered!! ++++ \n\r"); + flip(ledIntrG); } int main(void) { - led1 = 1; + // turn all LED off + ledAlive = 1; + ledIntrG = 1; + ledIntrO = 1; + Ticker ticker; ticker.attach(periodicCallback, 1); @@ -118,9 +138,16 @@ UARTService uartService(ble); uartServicePtr = &uartService; - // setup baud rate and reset sensor + // setup baud rate pc.baud(115200); - led4 = 1; + + // setup Interrupt mode + intrGXO.mode(PullUp); + intrGX.mode(PullUp); + + // status light will be lit based on sensor/data change + intrGX.rise(&flip4); + intrGXO.rise(&flip3); while (true) { ble.waitForEvent(); @@ -131,12 +158,12 @@ pc.printf("%2f,%2f,%2f\r\n", imu.gx,imu.gy,imu.gz); // no magnetometer available for this sensor pc.printf("0.000000,0.000000,0.000000\r\n"); - imu.readIntr(); + //imu.readIntr(); // pc.printf("intr: %f\r\n", imu.intr); - if(imu.intr > 0) { +// if(imu.intr > 0) { // pc.printf(" == interrupted == \r\n"); - flip(); - } +// flip(LED2); +// } wait(1.0); }