Firmware for head gesture sensor

Dependencies:   BLE_API MPU6050 mbed nRF51822

Committer:
jpalmows
Date:
Fri Jun 02 15:28:16 2017 +0000
Revision:
0:fde541752721
initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jpalmows 0:fde541752721 1 #include "mbed.h"
jpalmows 0:fde541752721 2 #include "MPU6050.h"
jpalmows 0:fde541752721 3 #include "ble/BLE.h"
jpalmows 0:fde541752721 4
jpalmows 0:fde541752721 5
jpalmows 0:fde541752721 6 DigitalOut myled(LED1);
jpalmows 0:fde541752721 7
jpalmows 0:fde541752721 8 MPU6050 ark(I2C_SDA0, I2C_SCL0);
jpalmows 0:fde541752721 9
jpalmows 0:fde541752721 10 BLE ble;
jpalmows 0:fde541752721 11
jpalmows 0:fde541752721 12 uint8_t AdvData[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff};
jpalmows 0:fde541752721 13 void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params)
jpalmows 0:fde541752721 14 {
jpalmows 0:fde541752721 15 BLE::Instance().gap().startAdvertising();
jpalmows 0:fde541752721 16 }
jpalmows 0:fde541752721 17
jpalmows 0:fde541752721 18 void periodicCallback(void)
jpalmows 0:fde541752721 19 {
jpalmows 0:fde541752721 20 }
jpalmows 0:fde541752721 21
jpalmows 0:fde541752721 22 void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason) // Mod
jpalmows 0:fde541752721 23 {
jpalmows 0:fde541752721 24 ble.startAdvertising();
jpalmows 0:fde541752721 25 }
jpalmows 0:fde541752721 26
jpalmows 0:fde541752721 27 void timeoutCallback(const Gap::TimeoutSource_t source)
jpalmows 0:fde541752721 28 {
jpalmows 0:fde541752721 29 ble.startAdvertising();
jpalmows 0:fde541752721 30 }
jpalmows 0:fde541752721 31
jpalmows 0:fde541752721 32 int main()
jpalmows 0:fde541752721 33 {
jpalmows 0:fde541752721 34 ble.init();
jpalmows 0:fde541752721 35
jpalmows 0:fde541752721 36 while(1) {
jpalmows 0:fde541752721 37 //reading Temprature
jpalmows 0:fde541752721 38 float temp = ark.getTemp();
jpalmows 0:fde541752721 39 // int tempData = floor(temp);
jpalmows 0:fde541752721 40 // AdvData[1] = tempData;
jpalmows 0:fde541752721 41
jpalmows 0:fde541752721 42 //reading Gyrometer readings
jpalmows 0:fde541752721 43 float gyro[3];
jpalmows 0:fde541752721 44 ark.getGyro(gyro);
jpalmows 0:fde541752721 45
jpalmows 0:fde541752721 46
jpalmows 0:fde541752721 47 float* inputAddress = &gyro[0];
jpalmows 0:fde541752721 48 float* inputAddress2 = &gyro[1];
jpalmows 0:fde541752721 49 float* inputAddress3 = &gyro[2];
jpalmows 0:fde541752721 50 // float* inputAddress = &input;
jpalmows 0:fde541752721 51 long int* ptr = (long int*)inputAddress;
jpalmows 0:fde541752721 52 long int* ptr2 = (long int*)inputAddress2;
jpalmows 0:fde541752721 53 long int* ptr3 = (long int*)inputAddress3;
jpalmows 0:fde541752721 54
jpalmows 0:fde541752721 55 // uint32_t typeCastedx = (uint32_t)x;
jpalmows 0:fde541752721 56 //int gyroData1 = floor(gyro[0]*1000);
jpalmows 0:fde541752721 57 AdvData[0] = *ptr >> 24;
jpalmows 0:fde541752721 58 AdvData[1] = *ptr >> 16;
jpalmows 0:fde541752721 59 AdvData[2] = *ptr >> 8;
jpalmows 0:fde541752721 60 AdvData[3] = *ptr;
jpalmows 0:fde541752721 61
jpalmows 0:fde541752721 62 AdvData[4] = *ptr2 >> 24;
jpalmows 0:fde541752721 63 AdvData[5] = *ptr2 >> 16;
jpalmows 0:fde541752721 64 AdvData[6] = *ptr2 >> 8;
jpalmows 0:fde541752721 65 AdvData[7] = *ptr2;
jpalmows 0:fde541752721 66
jpalmows 0:fde541752721 67 AdvData[8] = *ptr3 >> 24;
jpalmows 0:fde541752721 68 AdvData[9] = *ptr3 >> 16;
jpalmows 0:fde541752721 69 AdvData[10] = *ptr3 >> 8;
jpalmows 0:fde541752721 70 AdvData[11] = *ptr3;
jpalmows 0:fde541752721 71 // int gyroData2 = floor(gyro[1]*1000);
jpalmows 0:fde541752721 72 // uint8_t gyroData2 = gyro[1];
jpalmows 0:fde541752721 73 // AdvData[2] = gyroData2;
jpalmows 0:fde541752721 74 // int gyroData3 = floor(gyro[2]*1000);
jpalmows 0:fde541752721 75 // uint8_t gyroData3 = gyro[2];
jpalmows 0:fde541752721 76 // AdvData[3] = gyroData3;
jpalmows 0:fde541752721 77
jpalmows 0:fde541752721 78 //reading Acclerometer readings
jpalmows 0:fde541752721 79 float acce[3];
jpalmows 0:fde541752721 80 ark.getAccelero(acce);
jpalmows 0:fde541752721 81 int acceData1 = floor(acce[0]*1000);
jpalmows 0:fde541752721 82 // AdvData[5] = acceData1;
jpalmows 0:fde541752721 83 int acceData2 = floor(acce[1]*1000);
jpalmows 0:fde541752721 84 // AdvData[6] = acceData2;
jpalmows 0:fde541752721 85 int acceData3 = floor(acce[2]*1000);
jpalmows 0:fde541752721 86 // AdvData[7] = acceData3;
jpalmows 0:fde541752721 87
jpalmows 0:fde541752721 88 wait(0.1);
jpalmows 0:fde541752721 89
jpalmows 0:fde541752721 90 ble.setAdvertisingType(GapAdvertisingParams::ADV_NON_CONNECTABLE_UNDIRECTED);
jpalmows 0:fde541752721 91 ble.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */
jpalmows 0:fde541752721 92 ble.accumulateAdvertisingPayload(GapAdvertisingData::MANUFACTURER_SPECIFIC_DATA, AdvData, sizeof(AdvData));
jpalmows 0:fde541752721 93 ble.startAdvertising();
jpalmows 0:fde541752721 94
jpalmows 0:fde541752721 95
jpalmows 0:fde541752721 96 /* SpinWait for initialization to complete. This is necessary because the
jpalmows 0:fde541752721 97 * BLE object is used in the main loop below. */
jpalmows 0:fde541752721 98 while (ble.hasInitialized() == false) {
jpalmows 0:fde541752721 99 /* spin loop */
jpalmows 0:fde541752721 100 }
jpalmows 0:fde541752721 101
jpalmows 0:fde541752721 102
jpalmows 0:fde541752721 103 }
jpalmows 0:fde541752721 104
jpalmows 0:fde541752721 105 }