XYZ platform including 3 motors and 8 magnetometers (LIS3MDL).
Fork of XYZ_sensor_Platform by
Diff: xyz_sensor_platform.h
- 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