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

Fork of XYZ_sensor_Platform by Shih-Ho Hsieh

xyz_sensor_platform.h

Committer:
hober
Date:
2017-11-08
Revision:
0:b9e728e5c47c
Child:
2:856f03e64695

File content as of revision 0:b9e728e5c47c:

#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