XYZ platform including 3 motors and 8 magnetometers (LIS3MDL).
Fork of XYZ_sensor_Platform by
xyz_sensor_platform.h
- Committer:
- hober
- Date:
- 2018-01-05
- Revision:
- 11:f34acfd40dcd
- Parent:
- 8:679a5428d584
- Child:
- 12:e2b7e030193c
File content as of revision 11:f34acfd40dcd:
#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" #define MOTOR_INITIAL /*** 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(); void go_backward(); void go_up(); void go_down(); void go_right(); void go_left(); 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) ; AxesRaw_TypeDef get_mag() { AxesRaw_TypeDef ret; magnetometer->get_m_axes((int32_t *)&ret); return ret; } int get_mag_raw(int16_t *ret) { return magnetometer->get_m_axes_raw(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; } void setSensorI2cFrequency(int hz){ sensor->setI2cFrequency(hz); } private: void x_zero(); void x_end(); void y_zero(); void y_end(); void z_zero(); void z_end(); Motor *motorX, *motorY, *motorZ; float x,y,z; bool is_x_end, is_y_end, is_z_end, is_x_zero, is_y_zero, is_z_zero; InterruptIn xZero, xEnd, yZero, yEnd, zZero, zEnd; AltIMU_10_v5 *sensor; GyroSensor *gyroscope; MotionSensor *accelerometer; MagneticSensor *magnetometer; TempSensor *temp_sensor; }; #endif // __XYZ_SENSOR_PLATFORM_H