trabalho

Dependencies:   X_NUCLEO_IKS01A1 mbed-rtos mbed

Fork of HelloWorld_IKS01A1 by ST

Committer:
stwykd
Date:
Sat May 07 17:35:43 2016 +0000
Revision:
20:3e1e0f78defa
Parent:
19:d442ff60498c
Child:
23:61e09468bf3d
Solve some compile errors in main.cpp

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stwykd 19:d442ff60498c 1 #include "mbed.h"
stwykd 19:d442ff60498c 2 #include "x_nucleo_iks01a1.h"
stwykd 19:d442ff60498c 3
stwykd 19:d442ff60498c 4 /* Instantiate the expansion board */
stwykd 19:d442ff60498c 5 static X_NUCLEO_IKS01A1 *mems_expansion_board = X_NUCLEO_IKS01A1::Instance(D14, D15);
stwykd 19:d442ff60498c 6
stwykd 19:d442ff60498c 7 static GyroSensor *gyroscope = mems_expansion_board->GetGyroscope();
stwykd 19:d442ff60498c 8 static MotionSensor *accelerometer = mems_expansion_board->GetAccelerometer();
stwykd 19:d442ff60498c 9 static MagneticSensor *magnetometer = mems_expansion_board->magnetometer;
stwykd 19:d442ff60498c 10 static HumiditySensor *humidity_sensor = mems_expansion_board->ht_sensor;
stwykd 19:d442ff60498c 11 static PressureSensor *pressure_sensor = mems_expansion_board->pt_sensor;
stwykd 19:d442ff60498c 12 static TempSensor *temp_sensor1 = mems_expansion_board->ht_sensor;
stwykd 19:d442ff60498c 13 static TempSensor *temp_sensor2 = mems_expansion_board->pt_sensor;
stwykd 19:d442ff60498c 14
stwykd 19:d442ff60498c 15 class ExansionBoard {
stwykd 19:d442ff60498c 16 /* Retrieve the composing elements of the expansion board */
stwykd 19:d442ff60498c 17 void readIDs(){
stwykd 19:d442ff60498c 18 uint8_t id;
stwykd 19:d442ff60498c 19 humidity_sensor->ReadID(&id);
stwykd 19:d442ff60498c 20 printf("HTS221 humidity & temperature = 0x%X\r\n", id);
stwykd 19:d442ff60498c 21 pressure_sensor->ReadID(&id);
stwykd 19:d442ff60498c 22 printf("LPS25H pressure & temperature = 0x%X\r\n", id);
stwykd 19:d442ff60498c 23 magnetometer->ReadID(&id);
stwykd 19:d442ff60498c 24 printf("LIS3MDL magnetometer = 0x%X\r\n", id);
stwykd 19:d442ff60498c 25 gyroscope->ReadID(&id);
stwykd 19:d442ff60498c 26 printf("LSM6DS0 accelerometer & gyroscope = 0x%X\r\n", id);
stwykd 19:d442ff60498c 27 wait(3);
stwykd 19:d442ff60498c 28 }
stwykd 19:d442ff60498c 29
stwykd 19:d442ff60498c 30 /* Helper function for printing floats & doubles */
stwykd 19:d442ff60498c 31 static char *printDouble(char* str, double v, int decimalDigits=2)
stwykd 19:d442ff60498c 32 {
stwykd 19:d442ff60498c 33 int i = 1;
stwykd 19:d442ff60498c 34 int intPart, fractPart;
stwykd 19:d442ff60498c 35 int len;
stwykd 19:d442ff60498c 36 char *ptr;
stwykd 19:d442ff60498c 37
stwykd 19:d442ff60498c 38 /* prepare decimal digits multiplicator */
stwykd 19:d442ff60498c 39 for (; decimalDigits!=0; i*=10, decimalDigits--);
stwykd 19:d442ff60498c 40
stwykd 19:d442ff60498c 41 /* calculate integer & fractinal parts */
stwykd 19:d442ff60498c 42 intPart = (int)v;
stwykd 19:d442ff60498c 43 fractPart = (int)((v-(double)(int)v)*i);
stwykd 19:d442ff60498c 44
stwykd 19:d442ff60498c 45 /* fill in integer part */
stwykd 19:d442ff60498c 46 sprintf(str, "%i.", intPart);
stwykd 19:d442ff60498c 47
stwykd 19:d442ff60498c 48 /* prepare fill in of fractional part */
stwykd 19:d442ff60498c 49 len = strlen(str);
stwykd 19:d442ff60498c 50 ptr = &str[len];
stwykd 19:d442ff60498c 51
stwykd 19:d442ff60498c 52 /* fill in leading fractional zeros */
stwykd 19:d442ff60498c 53 for (i/=10; i>1; i/=10, ptr++) {
stwykd 19:d442ff60498c 54 if(fractPart >= i) break;
stwykd 19:d442ff60498c 55 *ptr = '0';
stwykd 19:d442ff60498c 56 }
stwykd 19:d442ff60498c 57
stwykd 19:d442ff60498c 58 /* fill in (rest of) fractional part */
stwykd 19:d442ff60498c 59 sprintf(ptr, "%i", fractPart);
stwykd 19:d442ff60498c 60
stwykd 19:d442ff60498c 61 return str;
stwykd 19:d442ff60498c 62 }
stwykd 19:d442ff60498c 63
stwykd 19:d442ff60498c 64 void readData(){
stwykd 19:d442ff60498c 65 float value1, value2;
stwykd 19:d442ff60498c 66 char buffer1[32], buffer2[32];
stwykd 19:d442ff60498c 67 int32_t axes[3];
stwykd 19:d442ff60498c 68
stwykd 19:d442ff60498c 69 temp_sensor1->GetTemperature(&value1);
stwykd 19:d442ff60498c 70 humidity_sensor->GetHumidity(&value2);
stwykd 19:d442ff60498c 71 printf("HTS221: [temp] %7s°C, [hum] %s%%\r\n", printDouble(buffer1, value1), printDouble(buffer2, value2));
stwykd 19:d442ff60498c 72
stwykd 19:d442ff60498c 73 temp_sensor2->GetFahrenheit(&value1);
stwykd 19:d442ff60498c 74 pressure_sensor->GetPressure(&value2);
stwykd 19:d442ff60498c 75 printf("LPS25H: [temp] %7s°F, [press] %smbar\r\n", printDouble(buffer1, value1), printDouble(buffer2, value2));
stwykd 19:d442ff60498c 76
stwykd 19:d442ff60498c 77 printf("---\r\n");
stwykd 19:d442ff60498c 78
stwykd 19:d442ff60498c 79 magnetometer->Get_M_Axes(axes);
stwykd 19:d442ff60498c 80 printf("LIS3MDL [mag/mgauss]: %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]);
stwykd 19:d442ff60498c 81
stwykd 19:d442ff60498c 82 accelerometer->Get_X_Axes(axes);
stwykd 19:d442ff60498c 83 printf("LSM6DS0 [acc/mg]: %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]);
stwykd 19:d442ff60498c 84
stwykd 19:d442ff60498c 85 gyroscope->Get_G_Axes(axes);
stwykd 19:d442ff60498c 86 printf("LSM6DS0 [gyro/mdps]: %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]);
stwykd 19:d442ff60498c 87 }
stwykd 19:d442ff60498c 88 };