XYZ platform including 3 motors and 8 magnetometers (LIS3MDL).

Fork of XYZ_sensor_Platform by Shih-Ho Hsieh

Revision:
0:b9e728e5c47c
Child:
2:856f03e64695
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xyz_sensor_platform.h	Wed Nov 08 14:11:24 2017 +0000
@@ -0,0 +1,100 @@
+#ifndef __XYZ_SENSOR_PLATFORM_H
+#define __XYZ_SENSOR_PLATFORM_H
+
+/*** Includes ----------------------------------------------------------------- ***/
+#include "mbed.h"
+#include "altimu_10_v5.h"
+#include "motor.h"
+#include "motor_targets.h"
+
+/*** Typedefs ----------------------------------------------------------------- ***/
+typedef struct {
+    int32_t AXIS_X;
+    int32_t AXIS_Y;
+    int32_t AXIS_Z;
+} AxesRaw_TypeDef;
+
+class XYZSensorPlatform
+{
+public:
+    XYZSensorPlatform();
+    void init(void);
+    
+    void go_forward() {
+        motorX->go(UP);
+    }
+    
+    void go_fackward() {
+        motorX->go(DOWN);
+    }
+    
+    void go_up() {
+        motorZ->go(UP);
+    }
+    
+    void go_down() {
+        motorZ->go(DOWN);
+    }
+    
+    void go_right() {
+        motorY->go(UP);
+    }
+    
+    void go_left() {
+        motorY->go(DOWN);
+    }
+    
+    void set_speed(float speed) {
+        motorX->setSpeed(speed);
+        motorY->setSpeed(speed);
+        motorZ->setSpeed(speed);
+    }
+    
+    float speed() {
+        return motorX->speed();
+    }
+    
+    void position(float* pos) {
+        pos[0] = motorX->position();
+        pos[1] = motorY->position();
+        pos[2] = motorZ->position();
+    }
+    
+    void reset() {
+        motorX->reset();
+        motorY->reset();
+        motorZ->reset();
+    }
+    void to(float x, float y, float z) {
+        motorX->to(x);
+        motorY->to(y);
+        motorZ->to(z);
+    }
+
+    AxesRaw_TypeDef get_mag() {
+        AxesRaw_TypeDef ret;
+        magnetometer->get_m_axes((int32_t *)&ret);
+        return ret;
+    }
+    
+    AxesRaw_TypeDef get_acc() {
+        AxesRaw_TypeDef ret;
+        accelerometer->get_x_axes((int32_t *)&ret);
+        return ret;
+    }
+    
+    AxesRaw_TypeDef get_gyr() {
+        AxesRaw_TypeDef ret;
+        gyroscope->get_g_axes((int32_t *)&ret);
+        return ret;
+    }
+private:
+
+    Motor *motorX, *motorY, *motorZ;
+    AltIMU_10_v5 *sensor;
+    GyroSensor *gyroscope;
+    MotionSensor *accelerometer;
+    MagneticSensor *magnetometer;
+    TempSensor *temp_sensor;
+};
+#endif // __XYZ_SENSOR_PLATFORM_H
\ No newline at end of file