Code for break using sensor

Dependencies:   SEGGER_RTT mbed-dev

Fork of DigitalOut_HelloWorld by mbed official

Committer:
Anythingconnected
Date:
Mon Dec 18 10:41:06 2017 +0000
Revision:
3:c058c2f600bb
Parent:
2:8f53e653f9b1
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Anythingconnected 2:8f53e653f9b1 1 #include <mbed.h>
Anythingconnected 2:8f53e653f9b1 2 #include "MPU9250.h"
Anythingconnected 2:8f53e653f9b1 3 #include "SEGGER_RTT.h"
Anythingconnected 2:8f53e653f9b1 4 #include "SEGGER_RTT.c"
Anythingconnected 2:8f53e653f9b1 5 #include "SEGGER_RTT_printf.c"
Anythingconnected 2:8f53e653f9b1 6 #include "nrf_drv_clock.h"
Anythingconnected 2:8f53e653f9b1 7
Anythingconnected 2:8f53e653f9b1 8 #define NRF_CLK_SRC NRF_CLOCK_LFCLKSRC_SYNTH_250_PPM
Anythingconnected 2:8f53e653f9b1 9
Anythingconnected 2:8f53e653f9b1 10 //MPU-9250 Settings
Anythingconnected 2:8f53e653f9b1 11 #define MPU9250_PIN_SCL 14 //P0.14
Anythingconnected 2:8f53e653f9b1 12 #define MPU9250_PIN_SDA 13 //P0.13
Anythingconnected 2:8f53e653f9b1 13 #define MPU9250_PIN_INT 12 //P0.12
Anythingconnected 2:8f53e653f9b1 14 #define MPU9250_I2C_ADDRESS 0b1101001 //AD0 pin for LSB in address is pulled up to logic high
Anythingconnected 2:8f53e653f9b1 15
Anythingconnected 2:8f53e653f9b1 16 //Define digital outputs
Anythingconnected 2:8f53e653f9b1 17 DigitalOut LED = p0;
Anythingconnected 2:8f53e653f9b1 18 DigitalOut VIBR = p1;
Anythingconnected 2:8f53e653f9b1 19
Anythingconnected 2:8f53e653f9b1 20 int acc[4], gyr[3], mag[3], temp, tmp;
Anythingconnected 2:8f53e653f9b1 21
Anythingconnected 2:8f53e653f9b1 22 MPU9250 mpu9250Sensor(MPU9250_PIN_SCL,MPU9250_PIN_SDA,MPU9250_I2C_ADDRESS);
mbed_official 0:b5a9e0614efd 23
Anythingconnected 2:8f53e653f9b1 24 void updateSensorValue() {
Anythingconnected 2:8f53e653f9b1 25 MPU9250_ACCEL_DATA accel = mpu9250Sensor.readAccel();
Anythingconnected 2:8f53e653f9b1 26 MPU9250_ACCEL_DATA accelnew = mpu9250Sensor.readAccelNew();
Anythingconnected 2:8f53e653f9b1 27 MPU9250_GYRO_DATA gyro = mpu9250Sensor.readGyro();
Anythingconnected 2:8f53e653f9b1 28 MPU9250_MAG_DATA magn = mpu9250Sensor.readMag();
Anythingconnected 2:8f53e653f9b1 29 MPU9250_TEMP_DATA temp = mpu9250Sensor.readTemp();
Anythingconnected 2:8f53e653f9b1 30
Anythingconnected 2:8f53e653f9b1 31 float accfactor = 1.0;
Anythingconnected 2:8f53e653f9b1 32 float gyrfactor = 1.0;
Anythingconnected 2:8f53e653f9b1 33 float magfactor = 1.0;
Anythingconnected 2:8f53e653f9b1 34
Anythingconnected 2:8f53e653f9b1 35 acc[0] = static_cast<int>(accel.x * accfactor);
Anythingconnected 2:8f53e653f9b1 36 acc[1] = static_cast<int>(accel.y * accfactor);
Anythingconnected 2:8f53e653f9b1 37 acc[2] = static_cast<int>(accel.z * accfactor);
Anythingconnected 2:8f53e653f9b1 38 acc[4] = static_cast<int>(accelnew.x * accfactor);
Anythingconnected 2:8f53e653f9b1 39 gyr[0] = static_cast<int>(gyro.x * gyrfactor);
Anythingconnected 2:8f53e653f9b1 40 gyr[1] = static_cast<int>(gyro.y * gyrfactor);
Anythingconnected 2:8f53e653f9b1 41 gyr[2] = static_cast<int>(gyro.z * gyrfactor);
Anythingconnected 2:8f53e653f9b1 42 mag[0] = static_cast<int>(magn.x * magfactor);
Anythingconnected 2:8f53e653f9b1 43 mag[1] = static_cast<int>(magn.y * magfactor);
Anythingconnected 2:8f53e653f9b1 44 mag[2] = static_cast<int>(magn.z * magfactor);
Anythingconnected 2:8f53e653f9b1 45 tmp = temp.temperature;
Anythingconnected 2:8f53e653f9b1 46 }
Anythingconnected 2:8f53e653f9b1 47
Anythingconnected 2:8f53e653f9b1 48 //Runs once on boot (called from main method)
Anythingconnected 2:8f53e653f9b1 49 void setup() {
Anythingconnected 2:8f53e653f9b1 50 NRF_CLOCK->XTALFREQ = 0xFF; //Reset to default (use external 16MHz crystal)
Anythingconnected 2:8f53e653f9b1 51 NRF_CLOCK->LFCLKSRC = (CLOCK_LFCLKSRC_SRC_RC << CLOCK_LFCLKSRC_SRC_Pos);
Anythingconnected 2:8f53e653f9b1 52 //NRF_CLOCK->LFCLKSRC = 0; // (NRF_CLOCK_LFCLKSRC_SYNTH_250_PPM) synthesize 32KHz clock from main frequency;
Anythingconnected 2:8f53e653f9b1 53
Anythingconnected 2:8f53e653f9b1 54 NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
Anythingconnected 2:8f53e653f9b1 55 NRF_CLOCK->TASKS_HFCLKSTART = 1;
Anythingconnected 2:8f53e653f9b1 56
Anythingconnected 2:8f53e653f9b1 57 while (NRF_CLOCK->EVENTS_HFCLKSTARTED == 0) {}
Anythingconnected 2:8f53e653f9b1 58
Anythingconnected 2:8f53e653f9b1 59 mpu9250Sensor.init();
Anythingconnected 2:8f53e653f9b1 60 }
mbed_official 0:b5a9e0614efd 61
mbed_official 0:b5a9e0614efd 62 int main() {
Anythingconnected 2:8f53e653f9b1 63 setup();
Anythingconnected 2:8f53e653f9b1 64 SEGGER_RTT_WriteString(0, "Start output \n");
Anythingconnected 2:8f53e653f9b1 65
Anythingconnected 2:8f53e653f9b1 66 while (true) {
Anythingconnected 2:8f53e653f9b1 67 updateSensorValue();
Anythingconnected 2:8f53e653f9b1 68 SEGGER_RTT_printf(0, "Acc X:%d, Y:%d, Z:%d\n", acc[0],acc[1],acc[2]);
Anythingconnected 2:8f53e653f9b1 69 SEGGER_RTT_printf(0, "AccNew X:%d\n", acc[4]);
Anythingconnected 2:8f53e653f9b1 70 SEGGER_RTT_printf(0, "Gyr X:%d, Y:%d, Z:%d\n", gyr[0],gyr[1],gyr[2]);
Anythingconnected 2:8f53e653f9b1 71 SEGGER_RTT_printf(0, "Mag X:%d, Y:%d, Z:%d\n", mag[0],mag[1],mag[2]);
Anythingconnected 2:8f53e653f9b1 72 SEGGER_RTT_printf(0, "Temp:%d\n", temp);
Anythingconnected 2:8f53e653f9b1 73 SEGGER_RTT_WriteString(0, "\n");
Anythingconnected 2:8f53e653f9b1 74 wait(0.5);
Anythingconnected 2:8f53e653f9b1 75 /*int tapThresh = 120;
Anythingconnected 2:8f53e653f9b1 76 if (acc[0] > tapThresh){
Anythingconnected 2:8f53e653f9b1 77 LED = 1;
Anythingconnected 2:8f53e653f9b1 78 VIBR = 1;
Anythingconnected 2:8f53e653f9b1 79 wait(0.3);
Anythingconnected 2:8f53e653f9b1 80 LED = !LED;
Anythingconnected 2:8f53e653f9b1 81 VIBR = !VIBR;
Anythingconnected 2:8f53e653f9b1 82 wait(2);
Anythingconnected 2:8f53e653f9b1 83 }*/
mbed_official 0:b5a9e0614efd 84 }
Anythingconnected 2:8f53e653f9b1 85 }