calculate

Dependencies:   mbed X_NUCLEO_IKS01A3 Mahony_Algorithm

Revision:
0:313fbc3a198a
Child:
1:48e219526d0f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CalculateData.cpp	Wed Apr 01 16:47:06 2020 +0000
@@ -0,0 +1,163 @@
+/**
+|**********************************************************************;
+* Project           : Projektarbeit Systemtechnik PES4
+*
+* Program name      : Beispiel
+*
+* Author            : PES4 Team1
+*
+* Team              : **Team 1**
+*                     Fabio Bernard
+*                     Lukas Egli
+*                     Matthias Ott
+*                     Pascal Novacki
+*                     Robin Wanner
+*                     Vincent Vescoli
+*                     Cyrill Zoller
+*
+* Date created      : 20.02.2020
+*
+* Purpose           : Beispiel
+*
+|**********************************************************************;
+**/
+
+#include "CalculateData.h"
+#include "mbed.h"
+#include "XNucleoIKS01A3.h"
+
+using namespace std;
+
+const float             CalculateData::PERIOD = 0.01f; //Periode von 10 ms
+
+
+static XNucleoIKS01A3   *mems_expansion_board;
+static LIS2MDLSensor    *magnetometer;
+static HTS221Sensor     *hum_temp;
+static LPS22HHSensor    *press_temp;
+static LSM6DSOSensor    *acc_gyro;
+static LIS2DW12Sensor   *accelerometer;
+static STTS751Sensor    *temp;
+float                   value1, value2;
+int32_t                 axes[3];
+
+
+
+CalculateData::CalculateData(PinName p0, PinName p1, PinName p2, PinName p3,
+                            PinName p4, PinName p5, PinName p6){
+    
+    /* Instantiate the expansion board */
+    mems_expansion_board = XNucleoIKS01A3::instance(p0, p1, p2, p3, p4, p5, p6);
+
+    /* Retrieve the composing elements of the expansion board */
+    magnetometer = mems_expansion_board->magnetometer;
+    hum_temp = mems_expansion_board->ht_sensor;
+    press_temp = mems_expansion_board->pt_sensor;
+    acc_gyro = mems_expansion_board->acc_gyro;
+    accelerometer = mems_expansion_board->accelerometer;
+    temp = mems_expansion_board->t_sensor;                          
+   
+    /* Enable all sensors */
+    hum_temp->enable();
+    press_temp->enable();
+    temp->enable();
+    magnetometer->enable();
+    accelerometer->enable_x();
+    acc_gyro->enable_x();
+    acc_gyro->enable_g();
+    
+    /*while(1){
+        printf("\r\n");
+
+        hum_temp->get_temperature(&value1);
+        hum_temp->get_humidity(&value2);
+        printf("HTS221: [temp] %4.2f C,   [hum] %4.2f%%\r\n", value1, value2);
+
+        press_temp->get_temperature(&value1);
+        press_temp->get_pressure(&value2);
+        printf("LPS22HH: [temp] %4.2f C, [press] %6.2f mbar\r\n", value1, value2);
+
+        temp->get_temperature(&value1);
+        printf("STTS751: [temp] %4.2f C\r\n", value1);
+
+        printf("---\r\n");
+
+        magnetometer->get_m_axes(axes);
+        printf("LIS2MDL [mag/mgauss]:  %6d, %6d, %6d\r\n", axes[0], axes[1], axes[2]);
+
+        accelerometer->get_x_axes(axes);
+        printf("LIS2DW12 [acc/mg]:  %6d, %6d, %6d\r\n", axes[0], axes[1], axes[2]);
+
+        acc_gyro->get_x_axes(axes);
+        printf("LSM6DSO [acc/mg]:      %6d, %6d, %6d\r\n", axes[0], axes[1], axes[2]);
+
+        acc_gyro->get_g_axes(axes);
+        printf("LSM6DSO [gyro/mdps]:   %6d, %6d, %6d\r\n", axes[0], axes[1], axes[2]);
+    }*/
+}
+
+
+CalculateData::~CalculateData() {
+
+}
+
+
+void CalculateData::enable(){
+    //Starten des periodischen Task
+    ticker.attach(callback(this, &CalculateData::run), PERIOD);
+
+     
+}
+
+void CalculateData::disable(){
+    ticker.detach(); // Stoppt den periodischen Task    
+}
+
+void CalculateData::getData(){
+        printf("\r\n");
+
+        hum_temp->get_temperature(&value1);
+        hum_temp->get_humidity(&value2);
+        printf("HTS221: [temp] %4.2f C,   [hum] %4.2f%%\r\n", value1, value2);
+
+        press_temp->get_temperature(&value1);
+        press_temp->get_pressure(&value2);
+        printf("LPS22HH: [temp] %4.2f C, [press] %6.2f mbar\r\n", value1, value2);
+
+        temp->get_temperature(&value1);
+        printf("STTS751: [temp] %4.2f C\r\n", value1);
+
+        printf("---\r\n");
+
+        magnetometer->get_m_axes(axes);
+        printf("LIS2MDL [mag/mgauss]:  %6d, %6d, %6d\r\n", axes[0], axes[1], axes[2]);
+
+        accelerometer->get_x_axes(axes);
+        printf("LIS2DW12 [acc/mg]:  %6d, %6d, %6d\r\n", axes[0], axes[1], axes[2]);
+
+        acc_gyro->get_x_axes(axes);
+        printf("LSM6DSO [acc/mg]:      %6d, %6d, %6d\r\n", axes[0], axes[1], axes[2]);
+
+        acc_gyro->get_g_axes(axes);
+        printf("LSM6DSO [gyro/mdps]:   %6d, %6d, %6d\r\n", axes[0], axes[1], axes[2]);
+
+}
+
+
+//Periodischer Task
+void CalculateData::run() {
+    
+        getData();    
+    
+}
+
+
+
+
+
+
+
+
+
+
+