mdot UDK & STMicro MEMS Shield Sensor packet example
Dependencies: libmDot-mbed5 DOGS102 ISL29011 MMA845x MPL3115A2 NCP5623B X_NUCLEO_IKS01A1 Senet_Packet
Fork of MTDOT-UDKDemo_Senet by
board/udk/board_udk.cpp
- Committer:
- Shaun Nelson
- Date:
- 2017-08-25
- Branch:
- develop
- Revision:
- 28:4fd8a894a403
- Parent:
- 27:1753a44fa9ec
- Child:
- 39:022b327d6bf0
File content as of revision 28:4fd8a894a403:
/*** * _____ _ #if defined MTDOT_UDK * / ____| | | * | (___ ___ _ __ ___ | |_ * \___ \ / _ \ | '_ \ / _ \ | __| * ____) | | __/ | | | | | __/ | |_ * |_____/ \___| |_| |_| \___| \__| * (C) 2016 Senet, Inc * */ #if defined MTDOT_UDK #include "board_udk.h" #include "x_nucleo_iks01a1.h" extern void mDotInit(); Serial debugUART(USBTX, USBRX); static X_NUCLEO_IKS01A1 *mems_shield; CBoardUDK::CBoardUDK() { boardPtr = this; } EBoardStatus CBoardUDK::init() { CBoard::init(); mems_shield = X_NUCLEO_IKS01A1::Instance(NULL, NC); return Board_Ok; } EBoardStatus CBoardUDK::readSensors ( BoardSensorData &data ) { uint32_t ret = 0; int32_t accel_data[3]; // Temperature ret |= (!CALL_METH(mems_shield->pt_sensor, GetTemperature, &data.temperature, 0.0f) ? 0x0 : 0x1); // Pressure ret |= (!CALL_METH(mems_shield->pt_sensor, GetPressure, &data.pressure, 0.0f) ? 0x0 : 0x1); // Accelerometer MotionSensor *motionSensor = mems_shield->GetAccelerometer(); if( motionSensor != NULL) { motionSensor->Get_X_Axes(accel_data); data.accel_x = accel_data[0]; data.accel_y = accel_data[1]; data.accel_z = accel_data[2]; /* z-axis : > 0 = rightside up, < 0 upside down * x-axis: com LED to the left x < 0, x > 0 on the right * y-axis: y > 0 COM LED down, y < 0 COM LED up */ data.orientation.init(); // rightside up if(data.accel_z >= 750) { // data.orientation.horizontal = true; } // upside down else if(data.accel_z <= -750) { data.orientation.down = true; // position_value = (2 << 12) | (1 << 8); } // vertical down else if(data.accel_y >= 900 ) { data.orientation.vertical = true; data.orientation.down = true; } // vertical up else if(data.accel_y <= -900 ) { data.orientation.vertical = true; data.orientation.up = true; } // side right else if(data.accel_x > 900) { data.orientation.right = true; } // side left else { data.orientation.left = true; } } return Board_Ok; } #endif